0

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

  Object prefab_item = Resources.Load("Item");
  GameObject g = Instantiate(prefab_item) as GameObject;
  g.transform.parent = this.transform; 
  g.transform.position = pos;
  Sprite sprite = Resources.Load("Images/item_" + item, typeof(Sprite)) as Sprite;
  g.GetComponent<SpriteRenderer>().sprite = sprite;

我想通过“项目”预制加载不同项目的列表,按下它们时如何识别不同的项目?

谢谢大家!

4

2 回答 2

0

代替:

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

你可以这样写:

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

然后该消息将在日志窗口中可单击。单击日志消息时将选择对象。

于 2014-12-19T09:34:25.237 回答
0

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

int i=1;
g.name = string.Format("item {0}", i);

然后您可以使用以下方法识别它:

var object = GameObject.Find("item 1");

如果您想在按下它时处理它,您可以:

  1. 向游戏对象添加对撞机组件;
  2. 在该 MonoBehaviour 脚本中添加 OnMouseDown() 函数
  3. 以编程方式将 MonoBehaviour 脚本附加到游戏对象:

    g.AddComponent("YourOnMouseDownScript");

于 2014-12-19T07:34:13.603 回答