【发布时间】:2014-04-03 12:12:22
【问题描述】:
我正在开发一款 FPS 游戏。我在主菜单场景中的第一个场景。这很好。在第二个场景中,用户正在选择他想要使用的枪(有四支枪)。当他按下播放时,我正在加载新场景(gamePlay)。我如何跟踪用户选择的枪?那么,他可以在游戏中使用那把枪吗?当您通过切换相机在单个场景中工作时,这很容易。但是在新场景下怎么做呢?
【问题讨论】:
我正在开发一款 FPS 游戏。我在主菜单场景中的第一个场景。这很好。在第二个场景中,用户正在选择他想要使用的枪(有四支枪)。当他按下播放时,我正在加载新场景(gamePlay)。我如何跟踪用户选择的枪?那么,他可以在游戏中使用那把枪吗?当您通过切换相机在单个场景中工作时,这很容易。但是在新场景下怎么做呢?
【问题讨论】:
这就是我一直在做的事情,而且效果很好。
实现一个从MonoBehaviour 派生的单例,以保存用户在菜单之间的选择,并且在加载新关卡时不会被销毁。
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;
顺便说一句,我通常创建属性而不是简单地访问公共变量,因为我喜欢控制分配的值(验证、额外行为等...)
【讨论】:
【讨论】: