Unity---使用管理器容器统一管理引用的游戏物体


从我刚开始学习Unity的时候,要在脚本中取得某个物体的引用时候,无非就一个方法,就是拖拖拖。当然这种方法对于新手入门来说再好不过了,也很容易理解。
但这种方法的缺点也是显而易见的,不仅有时候容易忘了赋值,也会赋错值,更会显得界面乱。在入门了一段时间后,要开始慢慢的抛弃这种方法,可以使用更高级好用的方法了。

另外有些游戏物体是很适合在脚本内部访问的,但并不是所有的都适合,所以下面介绍一种管理器容器方法可以用于解决这一问题。

ManagerVars

1、新建一个脚本ManagerVars

[CreateAssetMenu(menuName = "CreateManagerVarsContainer")]
public class ManagerVars : ScriptableObject
{
    public GameObject go1;
    public GameObject go2;
    public GameObject go3;
}

2、在Unity的Assets菜单中创建出这个Asset文件
这时候在这个脚本中public的游戏物体都可以在Asset文件中赋值了。

3、在脚本中加载这个Asset文件,用来获取所有赋值的游戏物体。

[CreateAssetMenu(menuName = "CreateManagerVarsContainer")]
public class ManagerVars : ScriptableObject
{
    public static ManagerVars GetManagerVars()
    {
        return Resources.Load<ManagerVars>("ManagerVarsContainer");
    }

    public GameObject go1;
    public GameObject go2;
    public GameObject go3;
}

4、使用

public class Test : MonoBehaviour
{
    private ManagerVars vars;
    private GameObject cube;

    private void Awake()
    {
        vars = ManagerVars.GetManagerVars();
    }

    void Update()
    {
        cube = vars.cube1;
    }
}
上一篇:c# – 公共静态字典中的GameObjects在Unity中的场景变化中被销毁


下一篇:Unity如何让UI拦截鼠标的点击事件