C# 在新场景中通过playerpreference加载预制

C# 在新场景中通过playerpreference加载预制,c#,unity3d,unityscript,unity5,unity3d-2dtools,C#,Unity3d,Unityscript,Unity5,Unity3d 2dtools,在“我的游戏”的主菜单中,有一个部分供玩家选择角色的皮肤并进入游戏 我正在努力保存playerpreference中的“Controller Animator”和“Transform”,这是用户选择的,并在下一个场景x-0、Y-0、z-0中实例化它 所有皮肤都已将其“控制器”和“转换”附加到检查器(请参见所附图片) 只是我不能在下一个“游戏”场景中实例化它们 在我的纸条下面选择皮肤并进入“游戏” 使用UnityEngine; 使用系统集合; 使用UnityEngine.SceneManage

在“我的游戏”的主菜单中,有一个部分供玩家选择角色的皮肤并进入游戏

我正在努力保存playerpreference中的“Controller Animator”和“Transform”,这是用户选择的,并在下一个场景x-0、Y-0、z-0中实例化它

所有皮肤都已将其“控制器”和“转换”附加到检查器(请参见所附图片)

只是我不能在下一个“游戏”场景中实例化它们

在我的纸条下面选择皮肤并进入“游戏”

使用UnityEngine;
使用系统集合;
使用UnityEngine.SceneManagement;
公共阶层选择:单一行为{
公共运行时动画控制器动画;
公众转化蜂;
字符串skinChoice=“皮肤”;
public void ChangeAnimator(){
Animator Animator=Bee.gameObject.GetComponent();
animator.runtimeAnimatorController=anim;
}
公共游戏
{
SceneManager.LoadScene(“游戏”);
}
}

您可以将预置的名称设置为静态字符串,并在下一个游戏场景开始时引用它:

public static string skinchoice = "skin";
和Creator类:

public class Creator : MonoBehaviour { 
    void Start(){
        if (Choice.skinchoice == "skin1") Instantiate(Bee1);
        else if (Choice.skinchoice == "skin2") Instantiate(Bee2);
        ...
    }
}

使用playerprefs非常简单:varu,通常在Unity中从不使用“static”。当然,初学者永远不应该这样做;在ECS环境中,几乎不可能理解它的含义。(这与这个问题完全无关:只使用PlayerPrefs。)我不知道PlayerPrefs,但我知道它们用于不同的游戏会话,但这可能是一个更好的主意。无论如何,为什么不在Unity中使用静态呢?
public class Creator : MonoBehaviour { 
    void Start(){
        if (Choice.skinchoice == "skin1") Instantiate(Bee1);
        else if (Choice.skinchoice == "skin2") Instantiate(Bee2);
        ...
    }
}