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

Function 从Unity中的另一个脚本访问函数和变量,function,unity3d,global-variables,unityscript,Function,Unity3d,Global Variables,Unityscript,我已经搜索了几个小时了,没有得到任何结果。我有一个名为GameSetup.js的脚本,它连接到一个空的游戏对象(名为GM)。它包含对我当前相机的引用,并具有获取屏幕宽度和其他内容的功能。我想从其他脚本访问这些函数(和变量)。例如,我有另一个名为“Blocks”的空游戏对象,它的一个组件是BlockGenerator.js,它有BlockGenerator()函数。我希望能够在BlockGenerator()中使用screenWidth(),如下所示: BlockGenerator.js Bloc

我已经搜索了几个小时了,没有得到任何结果。我有一个名为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。我不确定是否可以在inspector中拖动GM游戏对象并将其传递给BlockGenerator.js,我还没有尝试。但问题是,这让游戏脚本变得非常复杂,没有什么好的理由。如何设置和访问全局函数和变量?

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


另一种方法是通过在BlockGenerator中的标记查找对象,或使用按类型搜索。

我不想处理inspector,因为如果多个脚本使用一个变量,那么将inspector中的对象拖到所有脚本中会很混乱。然而,我使用了你建议的第二种方法。因此,我标记了GM GameObject,并在BlockGenerator.js中使用以下行访问ScreenWidth函数:var ScreenWidth:float=GameObject.FindGameObjectWithTag(“GM”).GetComponent(GameSetup).ScreenWidth();