1

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

4

2 回答 2

4

这取决于情况和您的要求。在大多数情况下,有几种方法可以走。

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

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

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

看看在 Unity 中,如何将值从一个脚本传递到另一个脚本?用于编码示例和Unity3D 单例管理器类,以深入了解单例MonoBehaviour实例。

于 2013-01-08T17:31:53.633 回答
0

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

于 2013-01-09T07:11:39.437 回答