从另一个脚本C#访问实例化资源

时间:2015-12-26 08:21:34

标签: c# unity3d

对于上下文,我已经随着时间的推移实例化了多个GameObjects,它代表了我游戏中的得分。我知道如何改变它们被实例化的位置。

string scoreText = score.ToString ();

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

go.transform.localPosition = new Vector3(0.02F + i * 0.01F, 0.13F, 0);
}

我不知道怎么做是改变另一个剧本中的位置。同样,对于上下文,在其他脚本中的Game Over上,我想要更改我实例化的这些对象的位置。

我尝试过GetComponent和GameObject的多种变体。我无法确定我想要访问的一个GameObject,因为它是多个不断变化的GameObjects。我觉得我没有看到这个权利。有谁知道怎么做?

2 个答案:

答案 0 :(得分:1)

一种方法是让你的GameObject变量一个类变量,以便你可以用其他方法访问它。但是如果你产生了许多对象,你可以制作一个GameObjects数组,然后通过迭代来找到你需要的对象。您可以将数组设为公共变量,以便其他脚本可以查看它。

答案 1 :(得分:0)

其他脚本可以访问脚本WindowsBasepublic的数据,因此第一步是创建一个可以在主脚本中保存乐谱的变量:

static

在初始化期间,使用此变量保存分数:

public static GameObject[] Score;

此时,在游戏中通过脚本,您应该能够使用主脚本中的乐谱数据(如果这不起作用,请确保使用正确的命名空间和引用,但如果这两个脚本在同一个项目中应该没有任何问题):

string scoreText = score.ToString ();

Score = new GameObject[scoreText.Length];

for (int i = 0; i < scoreText.Length; i++)
{
    Score[i] = (GameObject)Instantiate(Resources.Load(scoreText[i].ToString()));
    Score[i].transform.localPosition = new Vector3(0.02F + i * 0.01F, 0.13F, 0);
}

如果你想通过脚本迭代游戏中的分数:

MainScript.Score //MainScript is the name of your main script