如何从另一个脚本访问非静态图像?

时间:2018-11-26 19:10:43

标签: unity3d

我有一个看起来像这样的脚本。

public class Script1: MonoBehaviour
    {
        public Image Character;
    }

我还有另一个脚本试图像这样访问图像。

public class Script2: MonoBehaviour
    {
        Script1.Character.sprite = Sprite1;
    }

我当然会收到错误消息,因为Character是一个非静态对象。我的问题是如何从脚本2更改脚本1中的精灵?据我所知,最好的方法是在Script2中定义一个引用Script1或使用getter / setter的游戏对象。我只是学习C#几个月,而且我从未使用过任何一种方法,而且我阅读的每个参考文献都没有以对我有意义的方式对其进行解释。

具体来说,如果我从Script2定义了一个游戏对象,它会创建一个新的游戏对象还是会改变现有的游戏对象?

公共图像字符最终需要一个以上的脚本才能访问,因此无论使用哪种方法,我都需要确保更改脚本1而不是创建新对象,或者至少需要具有相同的对象效果。

有人可以提供简单的解决方案吗?

1 个答案:

答案 0 :(得分:0)

您必须创建对该脚本的引用才能访问其成员。

public class Script2 : MonoBehaviour
{
     private Script1 whateverYouWannaCallIt;

     public void Awake()
     {
          whateverYouWannaCallIt = gameObject.GetComponent<Script1>();
     }

}

“唤醒”函数中的行用于脚本是否在同一对象上。要访问另一个对象上的脚本,您需要在GetComponent <>()

之前使用Gameobject.Find <>()。