从Unity中的另一个脚本访问函数和变量

时间:2014-04-15 09:28:19

标签: function unity3d global-variables unityscript

我一直在寻找这几个小时,但没有得到任何结果。我有一个名为GameSetup.js的脚本,它附加到一个空的游戏对象(名为GM)。它包含我当前相机的参考,并具有获取屏幕宽度和其他东西的功能。我想从其他脚本访问这些函数(和变量)。例如,我有另一个名为“Blocks”的空游戏对象,其中一个组件是BlockGenerator.js,它具有BlockGenerator()函数。我希望能够在BlockGenerator()中使用screenWidth(),如下所示:

BlockGenerator.js

BlockGenerator(){
var Blocknumber : int =  GameSetup.ScreenWidth / blockWidth;
}

GameSetup.js

   function  ScreenWidth() : float{
        var screenWidth : float = (mainCam.ScreenToWorldPoint(new Vector3(Screen.width,0f, 0f)).x)* 2;
        return screenWidth;

当然,如果我使用GetComponent(),则无法在BlockGenerator.js中识别GameSetup。我不确定我是否可以在检查器中拖动GM游戏对象并将其传递给BlockGenerator.js,我还没试过。但事实是,它使得游戏脚本非常复杂,没有充分的理由。如何设置和访问全局函数和变量?

1 个答案:

答案 0 :(得分:0)

在包含BlockGenerator方法的类中,您需要定义GameSetup类型的公共变量。然后在检查器中拖动要访问其实例变量的对象。之后,您可以访问BlockGenerator方法中的对象并调用其方法并访问其实例变量。

另一种方法是通过https://docs.unity3d.com/Documentation/ScriptReference/GameObject.FindGameObjectsWithTag.html在BlockGenerator中按标记查找对象,或使用http://docs.unity3d.com/Documentation/ScriptReference/Object.FindObjectOfType.html按类型搜索。