【发布时间】:2015-07-13 14:15:50
【问题描述】:
好的,我已经被困在这个兔子洞有一段时间了,我需要一些见解。我正在尝试创建一个小脚本,我可以将其附加到按下时实例化图像的按钮。我锁定了如何在编辑器中创建一个公共 GameObject 字段,我可以将一个唯一的 Image 预制件拖到编辑器中(对于每个按钮)。我现在迷路了。我最初在 Resources.Load() 中使用显式预制件编写它,但现在我需要将它抽象化,以便可以将它与几十个按钮一起使用。
Vector3 symbolScale = new Vector3(1.0f, 1.0f, 1.0f);
public GameObject symbolPrefabObj = Resources.Load(symbolPrefab);
GameObject symbolCharacter;
public void OnPointerClick (PointerEventData eventData)
{
// Instantiate an object on Click
symbolCharacter = Instantiate(symbolPrefabObj, new Vector3(0, 0, 0), Quaternion.identity) as GameObject;
symbolCharacter.transform.parent = GameObject.FindGameObjectWithTag("MessagePanel").transform;
symbolCharacter.transform.localScale = symbolScale;
}
这是我编写的原始代码(如下),它适用于单个实例,但就像我提到的那样,我想将此代码放到几十个按钮上,并在编辑器中为每个按钮分配一个不同的图像预制件。
Vector3 symbolScale = new Vector3(1.0f, 1.0f, 1.0f);
GameObject symbolCharacter;
#region IPointerClickHandler implementation
public void OnPointerClick (PointerEventData eventData)
{
// Instantiate an object on Click
symbolCharacter = Instantiate(Resources.Load ("Prefabs/Symbols/SymbolImage1"), new Vector3(0, 0, 0), Quaternion.identity) as GameObject;
symbolCharacter.transform.parent = GameObject.FindGameObjectWithTag("MessagePanel").transform;
symbolCharacter.transform.localScale = symbolScale;
}
【问题讨论】:
-
看起来你应该将
GameObject symbolPrefabObj作为方法的参数,并将GameObject symbolCharacter作为返回值。然后,您还可以将方法设为静态,然后,例如,每个GameObject symbolCharacter*有一个全局字段,并为每个字段调用该函数。
标签: unity3d instantiation