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

本文关键字:实例化 资源 访问 另一个 脚本 | 更新日期: 2023-09-27 18:28:08

对于上下文,随着时间的推移,我实例化了多个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的多种变体。我无法确定我想访问的一个游戏对象,因为它是多个不断变化的游戏对象。我觉得我没有正确看待这个问题。有人知道怎么做吗?

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

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

其他脚本可以访问脚本的数据,即publicstatic,因此第一步是创建一个变量,将您的分数保存在主脚本中:

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

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

for (int i = 0; i < MainScript.Score.Length; i++)
{
    MainScript.Score[i] = do something here...
}