创建一个Resources.Load变量以用于多个按钮

时间:2015-07-13 05:45:13

标签: unity3d instantiation

好吧,我现在已经被困在兔子洞里一段时间了,我需要一些见解。我正在尝试创建一个小脚本,我可以将其附加到按下实例化图像的按钮上。我已经锁定了如何在编辑器中创建公共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;
}

这是我编写的原始代码(下面),它适用于单个实例,但就像我提到的,我想将这些代码放到几十个按钮上,并在编辑器中为每个按钮指定一个不同的图像预制件。 / p>

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;
}

1 个答案:

答案 0 :(得分:1)

也许这就是:

public string imageName;

symbolCharacter = Instantiate(Resources.Load (Path.Combine("Prefabs/Symbols", imageName)), new Vector3(0, 0, 0), Quaternion.identity) as GameObject;

现在您可以将此脚本附加到具有不同imageName的许多游戏对象,因为imageName是一个公共变量。