【问题标题】:Accessing my 'Options' panel from another script从另一个脚本访问我的“选项”面板
【发布时间】:2017-10-16 04:22:35
【问题描述】:

我创建了一个具有以下内容的 pong 克隆: 主菜单(新游戏、选项、关于、退出)。 Level1(可以按 ESC 打开暂停菜单面板(继续游戏、选项、退出主菜单)。

到目前为止,我已经从主菜单场景复制了我的选项面板,并将其粘贴到 Level1 场景中。有更好的方法吗?我可以从我的 Level1 场景调用主菜单选项面板吗?我想创建一个 Options 预制件是另一个想法?

我想在处理选项菜单(声音开/关、声音通过滑块调节、音乐开/关、音乐通过滑块调节)之前对其进行排序 - 希望我可以实现它,使其涵盖所有场景。

顺便说一句,这是在 C# 中,在 Unity 中。

【问题讨论】:

  • options canvas prefab 是最好的主意

标签: unity3d unity2d


【解决方案1】:

您不能直接更改其他场景中的值,因为此时实例不存在,但您可以使用 PlayerPrefs 保存退出场景的数据,并且在加载场景时您可以在 UI 中加载该数据。

例如,您可以像这样保存和加载音量:

float mySoundVolume;

void OnDestroy(){
   PlayerPrefs.SetFloat("SoundVolume", mySoundVolume);
}
void Awake(){
   mySoundVolume = PlayerPrefs.GetFloat("SoundVolume");
   applyValuesToUI();
}

您可以在此处阅读有关 PlayerPrefs 的更多信息。 https://docs.unity3d.com/ScriptReference/PlayerPrefs.GetFloat.html

【讨论】:

  • 太棒了,谢谢伙计!我想这就是当你开始一个新的关卡(场景)时他们如何继承你的积分等?
  • 是的,差不多。这绝对是最简单的方法。如果您正在寻找更高级的用户数据保存(例如,通过网络轻松传递它的选项,以保存一些更高级的数据类型),您可以查看此资产assetstore.unity3d.com/en/#!/content/768(您可以找到更便宜甚至免费的东西符合您的需求,但我有这方面的经验并且可以保证)。它的工作原理与 PlayerPrefs 非常相似,但有更多选项。无论哪种方式,您都应该首先学习 PlayerPrefs,了解您是否正在做一些简单的事情总是有用的。
猜你喜欢
  • 1970-01-01
  • 2015-10-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多