【发布时间】:2021-11-24 23:08:15
【问题描述】:
我遇到的问题
我创建了一个包含静态变量的类,我希望从中写入和读取数据,这里是数据脚本:
LocalDataContainer.cs:
public class LocalRuntimeData
{
/*
Local Runtime Data is the container for all local data used during runtime.
*/
public static LocalPlayer Player;
public static AvatarInstance Avatar;
public static LocomotionManager LocomotionManager;
public static TrackedDevices TrackedDevices;
/*
Methods
*/
}
但是使用另一个脚本从 'Start()' 方法将数据保存到 'Player' 变量,然后将该数据加载回其他组件,没有返回任何内容 - 但我不明白的是没有来自我的 IDE 和 Unity 编辑器的错误。
这是试图将数据保存到静态“播放器”变量的第二个脚本。
LocalPlayer.cs:
private void Start()
{
// Save player to LocalSpace runtime data.
LocalRuntimeData.Player = transform.GetComponent<LocalPlayer>();
...
我还尝试使用LocalRuntimeData.Player = this; 仅从它自身传递组件,而没有尝试一些无用的解决方法,即围绕转换执行循环回到同一组件,但这不起作用。
问题
目前,我什至不知道这是否会将数据写入静态变量,因为当我尝试使用 LocalPlayer Player = LocalRuntimeData.Player 时,实际上没有任何内容返回到尝试获取该静态变量的组件。
是的,尝试访问该静态变量的组件正在引用我们所在的命名空间“LocalRuntimeData.cs”。提醒;我的 IDE 或 Unity 编辑器都没有出现错误。
【问题讨论】:
-
“什么都没有返回”是什么意思?
Player变量是否为空? -
@Jesse 差不多,当脚本运行它们的 Start() 方法并尝试读取
LocalRuntimeData.Player或其他变量时,组件的 value 字段中实际上没有放置任何内容。 -
题外话,对
static字段/引用更好的Unity 方法 是在您的场景中说一个GameObject,名为say "_game" 使用自定义MonoBehaviour引用LocalPlayer、AvatarInstance等。不需要static。这样,Unity 就可以了解和控制所有对象实例 -
@Ruzihm 是的!实际上在发布问题的当晚就考虑过这一点,但是是的,这解决了问题。