我正在制作FPS游戏。我在主菜单场景中的第一个场景。哪个好。在第二个场景中,用户正在选择他想要使用的枪(有四支枪)。当他按下播放时我正在加载新场景(gamePlay)。如何跟踪用户选择的枪?那么,他可以在gamePlay中使用那把枪吗?通过切换相机在单个场景中工作时很容易。但是如何在新场景中做到这一点?
答案 0 :(得分:1)
答案 1 :(得分:1)
这就是我一直在做的事情,而且效果非常好。
实现一个派生自MonoBehaviour
的Singleton,以便在菜单之间保持用户选择,并在加载新级别时不会销毁。
public class UserChoices : MonoBehaviour
{
public static UserChoices Instance = null;
// just an example, add more as you like
public int gun;
void Awake()
{
DontDestroyOnLoad(this.gameObject);
if(Instance == null)
{
Instance = this;
} else if(Instance != this)
{
Destroy(this.gameObject);
}
}
}
现在您只需要执行一次:
现在,您可以轻松地在场景之间保存和阅读用户选择:
// read chosen gun
int chosen_gun = UserChoises.Intance.gun;
//save chosen gun
UserChoises.Intance.gun = PlayerGuns.Knife;
只是旁注,我通常创建属性而不是简单地访问公共变量,因为我喜欢控制分配的值(验证,额外行为等等)
<强> MonoBehaviour 强>
<强> DontDestroyOnLoad 强>