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