UnityVR-项目的管理阶层

目录

概述

项目的总体架构

单例基类

继承MonoBehaviour的单例基类


概述

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

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

项目的总体架构

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

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

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

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

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

单例基类

using System;
//不继承Mono的单例
public class Single<T> 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<T> : MonoBehaviour where T : SingleMono<T>
{
    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<T>();//如果go上没有挂脚本
                if(!instance)
                {
                    instance = go.AddComponent<T>();
                }
            }
            return instance;
        }     
    }
}

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值