【问题标题】:Remove part of Gameobject name删除部分游戏对象名称
【发布时间】:2011-11-13 20:55:57
【问题描述】:

是否可以删除赋予游戏对象的名称的一部分?例如:

我正在实例化游戏对象以使用子弹。我给他们射击子弹的玩家的名字。所以如果一个玩家的名字是“Ben”,他的子弹就叫做Ben的子弹。

gameObject.name = playerName + "'s bullet";

现在我试图用这个名字来知道哪个人给了其他玩家最后一击。为此,我想找到与子弹同名的玩家对象,并更新他的击杀计数。所以我想从子弹名称中删除“'子弹”部分。

长话短说:是否可以删除赋予游戏对象的名称的一部分?

希望这足够清楚,非常感谢您的帮助。提前致谢!

编辑:这是名称必须更改的部分:

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 变量中。我打印了它,上面写着:玩家名的子弹。这可行,但现在它唯一需要的是移除 ' 子弹

【问题讨论】:

标签: unity3d


【解决方案1】:
int suffixLength = "'s bullet".Length;
string player = gameObject.name.Substring(0, gameObject.name.Length - suffixLength);

但也许拥有一个不需要操作即可找到玩家姓名的属性会更好?

【讨论】:

    【解决方案2】:

    长话短说:在您的 GameObject 中保留对玩家的引用,而不是其名称。例如,如果您想增加射手每次击杀的经验或金币,这样您就可以节省玩家的查找费用。对于流弹或回收弹,只需将 Player 设置为 null。

    【讨论】:

      猜你喜欢
      • 2017-12-13
      • 1970-01-01
      • 2015-04-06
      • 2021-11-22
      • 1970-01-01
      • 2016-02-25
      • 1970-01-01
      • 2015-07-15
      • 2021-10-15
      相关资源
      最近更新 更多