如何在Unity3D中识别不同的预制件?

如何在Unity3D中识别不同的预制件?,unity3d,ngui,Unity3d,Ngui,我已经定义了一个名为“Item”并包含在参考资料中的预置 然后,我在GUI(Unity3D)中加载该预置 对象预制_item=Resources.Load(“item”); GameObject g=实例化(预制_项)为GameObject; g、 transform.parent=this.transform; g、 transform.position=pos; Sprite Sprite=Resources.Load(“图像/项目”+项目,类型(Sprite))作为Sprite; g、 G

我已经定义了一个名为“Item”并包含在参考资料中的预置 然后,我在GUI(Unity3D)中加载该预置

对象预制_item=Resources.Load(“item”);
GameObject g=实例化(预制_项)为GameObject;
g、 transform.parent=this.transform;
g、 transform.position=pos;
Sprite Sprite=Resources.Load(“图像/项目”+项目,类型(Sprite))作为Sprite;
g、 GetComponent().sprite=sprite;
我想通过“项目”预置加载不同项目的列表, 按下时如何识别不同的项目


谢谢大家

您可以为创建的每个游戏对象命名:

int i=1;
g.name = string.Format("item {0}", i);
然后,您可以使用以下方法进行识别:

var object = GameObject.Find("item 1");
如果要在按下时进行处理,可以:

  • 向游戏对象添加碰撞器组件
  • 在该脚本中添加OnMouseDown()函数
  • 以编程方式将MonoBehavior脚本附加到游戏对象:

    g、 AddComponent(“YourOnMouseDownScript”)

  • 而不是:

    Debug.Log ("item name: " + gameObject.name);
    
    你可以这样写:

    Debug.Log ("item name: " + gameObject.name, gameObject);
    

    然后,可以在日志窗口中单击该消息。当您单击日志消息时,对象将被选中。

    如何获取GameObject的名称,然后进行比较?当我按下任何一个按钮时?谢谢你,大卫!g、 name返回游戏对象的名称,您可以使用string.Contains(…)函数进行比较。它只显示第一项1,不显示第2、3、9项。虽然,我按下第2项,第3项,…第9项可能是,因为我定义了一个预置,然后我加载这个预置?是的,那么你应该想想这些项目是如何创建的?如果您的预置是Item1,并且您多次实例化它,那么您将有很多“Item1”的克隆,而不是任何“Item2”。如果手动重命名对象,则它们可以是“项目2”、“项目3”…谢谢David和piojo!我已完成:)
    Debug.Log ("item name: " + gameObject.name, gameObject);