Удалить часть имени игрового объекта

#unity3d

#unity-game-engine

Вопрос:

Возможно ли удалить часть имени, присвоенного игровому объекту? Например:

Я создаю экземпляр игровых объектов для использования маркеров. Я даю им имя игрока, стреляющего пулей. Итак, если игрока зовут «Бен», его пули называются Ben’s bullet.

 gameObject.name = playerName   "'s bullet";
  

Теперь я пытаюсь использовать это имя, чтобы узнать, кто из игроков наносит последний удар другому игроку. И для этого я хочу найти объект player с тем же именем, что и пуля, и обновить количество его убийств. Итак, я хочу удалить часть «s bullet» из названия bullets.

Итак, вкратце: возможно ли удалить часть имени, присвоенного игровому объекту?

Надеюсь, что это достаточно понятно, если вы действительно цените помощь. Заранее спасибо!

Редактировать: это та часть, где имя должно измениться:

 if(other.gameObject.tag == "bullet"){

         var colBullet = other.transform.name;
         playerHealth = playerHealth - 5;

         if(playerHealth <= 0){
          onDie();
          //colBullet = colBullet - "'s bullet";
          GameObject.Find(colBullet);
         }       }
  

Имя столкнувшегося объекта помещается в переменную colBullet. Я напечатал это, и там написано: маркер имени игрока. Это работает, но теперь единственное, что ему нужно, это удалить маркер ‘s

Комментарии:

1. Этот вопрос лучше подходит для gamedev.stackexchange.com . Подумайте о размещении там материалов, связанных с будущей игрой.

Ответ №1:

 int suffixLength = "'s bullet".Length;
string player = gameObject.name.Substring(0, gameObject.name.Length - suffixLength);
  

Но, может быть, было бы лучше иметь свойство, которым не нужно манипулировать, чтобы найти имя игрока?

Ответ №2:

Короче говоря: сохраняйте ссылку на игрока в вашем игровом объекте вместо его имени. Таким образом, вы экономите на поиске игрока, если хотите, например, увеличить опыт или золото, которое стрелок получает за каждое убийство. Для шальных пуль или переработанных просто установите для Player значение null.

Ответ №3:

Вы можете использовать функцию Replace (), чтобы удалить нужную вам часть, вот так:

 gameObject.name = gameObject.name.Replace("s bullet", "");