将值发送到Unity中的另一个场景

时间:2019-08-19 18:38:38

标签: c# unity3d

我试图在Unity中创建一个字符选择屏幕。但是我不知道如何告诉游戏场景在角色选择场景中拾取了什么皮肤。

我尝试使用DontDestroyOnLoad();,但没有使其正常工作。

我需要将值从一个场景中的画布发送到下一场景中的播放器对象。我没有让玩家进行预制工作,因为玩家所需的许多价值仅存在于游戏场景中。

我对Unity或C#经验不足,因此,如果您给出非常详细的答案并向我解释做了什么不同的事情以及原因,我将不胜感激。

最后,很抱歉,如果这个问题难以理解,就像我说的那样,我没有那么经验。我的英语也不太好。谢谢您的宝贵时间。

2 个答案:

答案 0 :(得分:2)

您可以为此使用PlayerPrefs(作为一种变体,代替DontDestroyOnLoad(gameObject)):https://docs.unity3d.com/ScriptReference/PlayerPrefs.html

答案 1 :(得分:0)

您可以使用设计模式 Singleton 创建唯一的实例。

public class CharacterManager
{
   private static CharacterManager singleton;
   private Skin currentSkin;

   public static CharacterManager Singleton
   {
      get
      {
         if (singleton == null)
         {
            singleton = new CharacterManager();
         }

         return singleton;
      }
   }

   public void SelectSkin(Skin skin)
   {
       currentSkin = skin;
   }

   public Skin GetCurrentSkin()
   {
       return currentSkin;
   }
}

用法

在Scene1中选择皮肤

CharacterManager.Singleton.SelectSkin(someSkin);

在Scene2中获取当前皮肤

character.skin = CharacterManager.Singleton.GetCurrentSkin();