UNITY 2D 我将如何保存我的角色,添加一个关卡选择菜单,然后再次恢复我的角色? [复制]
Posted
技术标签:
【中文标题】UNITY 2D 我将如何保存我的角色,添加一个关卡选择菜单,然后再次恢复我的角色? [复制]【英文标题】:UNITY 2D How would I save my character, add a level selection menu, then bring my character back up again? [duplicate] 【发布时间】:2021-12-27 03:53:48 【问题描述】:您好,我是 Unity 的新手,需要一些帮助。到目前为止,我的游戏中的场景是这样设置的:
主菜单 字符选择 关卡选择(具有锁定和解锁关卡的 UI MAP) 1 级我观看了有关创建角色选择选项和保存所选角色,然后将其带到下一个场景的教程。问题是我希望它只出现在 “Level 1”场景,而不是在 Level 选择场景/菜单中。我该怎么做?
这些是到目前为止我用来保存字符的代码行:
public void PlayGame()
PrefabUtility.SaveAsPrefabAsset(playerSkin, "Assets/Artwork/characters/selectedSkin.prefab");
SceneManager.LoadScene(SceneManager.GetActiveScene().buildIndex + 1);
【问题讨论】:
我在想一些更简单的事情......你为什么不使用 playerPrefs docs.unity3d.com/ScriptReference/PlayerPrefs.html ?要么;或者你可以在levelselectionscene中停用你的char。 【参考方案1】:如果您是新手,可以在保存您的皮肤、技能等的玩家对象上使用 DontDestroyOnLoad(),而不是将您的玩家保存为预制件。这会在加载新场景时将此播放器对象作为实例化的对象,您只需将值复制到要使用的播放器即可
//Check this on another player that you want to save the values to
public bool usedAsSave;
void Start()
if(usedAsSave)
//Disable the SpriteRenderer so it's not drawn and the Rigidbody2d that he doesn't fall
GetComponent<SpriteRenderer>().enabled = false;
GetComponent<Rigidbody2D>().enabled = false;
DontDestroyOnLoad(this.gameObject);
_________________________________________________________________________
//This is on what ever object you are calling it from
void PlayGame()
SceneManager.LoadScene(SceneManager.GetActiveScene().buildIndex + 1);
//Now you can call this in whatever scene you want the player to be by, for example binding it into a if statement
//if(SceneManager.GetActiveScene().buildIndex == 1) fror example
void CopyPlayer()
//In this example the object has the name "SaveObejct"
var copy = GameObject.Find("SaveObject");
//Now you can copy all the values to the Player you are using
playerSkin.whateverValue = copy.whateverValue;
Here 是 Unity 的 DontDestroyOnLoad API。
这写得有点多,但我发现初学者更容易理解,我一开始也使用它,在场景之间传输数据。 我希望你能正确理解,如果没有,请多解释一下这个问题
【讨论】:
以上是关于UNITY 2D 我将如何保存我的角色,添加一个关卡选择菜单,然后再次恢复我的角色? [复制]的主要内容,如果未能解决你的问题,请参考以下文章