Unity3D,可编辑的全局变量?

时间:2013-01-08 16:14:38

标签: unity3d global-variables

据我所知,使用全局变量的唯一可能性是将它们定义为static(C#中的const)。 有没有办法从另一个脚本访问和更改变量,而两个脚本都访问同一个变量?

2 个答案:

答案 0 :(得分:3)

这取决于具体情况和要求。在大多数情况下,有几种方法可以去。

如果两个脚本都派生自MonoBehaviour并且处于活动状态,您可以使用非静态公共成员并使用GameObject.Find(如果您经常需要它,请将其存储为参考,或者在Unity中使用拖放操作编辑器)。

仅当您依赖于对象时,这两个对象在同一场景中处于活动状态或通过调用DontDestroyOnLoad延长其生命周期才能正常工作。

如果您有普通对象,public static应该是最方便的方法,但可以与单例模式结合使用。请注意,public const仅适用于基本类型。如果要授予对结构或对象的只读访问权限,可以使用public static readonly

请查看In Unity, how can I pass values from one script to another?以获取编码示例,并Unity3D singleton manager classes查看有关MonoBehaviour个实例的单例的深入思考。

答案 1 :(得分:0)

如果值是受支持的类型,不经常访问,并且会受益于应用程序运行之间的持久性,PlayerPrefs有时是保留一些全局变量的好地方:)