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 我将如何保存我的角色,添加一个关卡选择菜单,然后再次恢复我的角色? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

unity2d垂直移动逻辑错误

如何在 Unity 中获得平滑的 2D 跳跃?

unity2d 如何使角色静止

Unity 2D c# - 如何保存最后一个动画位置

如何使用新的 Unity4.3 2D 框架正确翻转 2D 角色? (动画期间游戏对象的旋转)

Unity2D游戏角色动画教程-使用Photoshop创建2D游戏角色素材