UnityVR-项目的管理阶层

目录

概述

项目的总体架构

单例基类

继承MonoBehaviour的单例基类


概述

    一个具备一定规模的项目,一般都需要由不同人员合作完成,每个人的想法风格不相同,如果一开始没有定下基本的框架,会让实现时混乱不堪,而且无法保证代码的安全性。另外,在项目制作过程中难免会遇到需求变更的问题,如果因为一个模型或者按钮的改变而要大篇幅修改代码,也是一个非常不值得的事。因此,在项目的开始最初就要定好基调和结构。

  本篇及本专栏(管理阶层Managers)参考了B站教程、Unity教程以及Unity基础框架从0到1 开篇,Unity游戏基本框架,Unity项目架构与开发管理等教程,定义了一个较简单基本的框架,仅作为基本举例参考。

项目的总体架构

  在一个项目中需要管理的有声音、UI、资源加载、输入输出等,每一个都需要有管理模块,集中管理一些通用的工具。

  举个例子:资源管理(ResLoadManager)中定义了从硬盘中加载各种资源的方法、路径等,这是在项目中常常会用到的,因此在ResLoadManager中集中定义和管理,当资源路径发生改变时,只要在ResLoadManager中修改即可。

  在本例中设置的管理类一共有如下8个:

UnityVR-项目的管理阶层_第1张图片

   每一个Manager类都是单例,继承一个单例基类,以确保场上每种Manager只有唯一的一个。

   单例基类有两种,其中一个是继承MonoBehaviour的单例基类,因为有一些工具中需要使用到MonoBehaviour定义的API。以下是单例基类的定义:

单例基类

using System;
//不继承Mono的单例
public class Single where T: class
{
    private static T _instance;
    private static T instance;
    public static T Instance 
    { 
        get
        {
            if (_instance == null)
            {//判断如果场上没有实例,就动态创建一个实例
                Type type= typeof(T);
                _instance=Activator.CreateInstance(type,true) as T;
            }
            return _instance;
        }
    }
    protected Single()
    {

    }
}

继承MonoBehaviour的单例基类

  继承这个基类的Manager,需要在场景中实例化,可以自己在场景中建立一个空节点SingleMono挂载(或者代码中新建一个)

public class SingleMono : MonoBehaviour where T : SingleMono
{
    private static T instance;
    private static GameObject go;
    public static T Instance 
    { 
        get
        {
            if(instance==null)
            {
                if(!go)
                {//如果场内没有SingleMono节点,就建立一个
                    go = GameObject.Find("SingleMono");
                    if (!go)
                        go = new GameObject("SingleMono");
                }
                DontDestroyOnLoad(go);
                instance=go.GetComponent();//如果go上没有挂脚本
                if(!instance)
                {
                    instance = go.AddComponent();
                }
            }
            return instance;
        }     
    }
}

  所有的Manager类都继承这两个类之一,具体的实现方式详见本专栏的其他篇——管理阶层Managers

你可能感兴趣的:(unity)