有条件地实例化资产

时间:2015-12-25 05:32:57

标签: c# unity3d

我在Unity中实例化.obj版本的数字。

void Update () {
    string scoreText = score.ToString ();
    string[] characters = new string[scoreText.index];

    for (int i = 0; i < scoreText.Length; i++)
    {
        Instantiate (Resources.Load (characters[i]) as GameObject);
        gameObject.layer = 8;

    }
    }

我将所有对象放在Assets文件夹中名为Resources的文件夹中。 我在他们的号码1,2,3之后命名他们。 我把分数变成了一个字符串。 对于每个角色,请加载资产。

我在这里做错了什么?

1 个答案:

答案 0 :(得分:1)

characters为空。你没有在里面放任何数据。并且您没有更改那些实例化游戏对象的图层。

试试这个

List<GameObject> destroyList = new List<GameObject>();

void UpdateScore()
{
    foreach (var go in destroyList)
    {
        Destroy(go);
    }
    destroyList.Clear();


    string scoreText = score.ToString ();

    for (int i = 0; i < scoreText.Length; i++)
    {
        var go = (GameObject)Instantiate(Resources.Load(scoreText[i].ToString());

        go.layer = 8;
        go.transform.localScale = Vector3.one;
        go.transform.localPosition = Vector3.zero;

        destoryList.Add(go);
    }
}

您还可以为这些对象实现池化以获得更好的性能。