当前位置:   article > 正文

[unity框架] 1.unity基础框架---BaseFrameWork(一)_unity baseframe

unity baseframe

我从16年后半年开始接触unity,入坑也一年多了,在这一年多的学习过程中也踩了不少的坑,最近一直在整理unity的框架,希望将之前的经验整理出来,这个系列随着我的不断整理也会一直的写下去,就当作对之前学习内容的一个整理.
由于我是一个喜欢项目规划的程序员,所以基本上一些控件尽量不会直接挂在游戏场景内,大多都通过代码来加载,当然一些信息也喜欢以XML或Json的方式来存储,想自己实现框架的人可以参照我的思路,按照自己的方式来完成这个框架.

关于框架

其实有很多人对框架存在一些误解,我对与框架的理解就是他方便了对某类功能的管理,用户只需拓展框架(继承自框架中的基类)与使用框架(调用框架管理类里提供的方法),就可以达到对这一功能的管理,例如在以后会写到的UI框架.

关于BaseFrameWork

在BaseFrameWork里面我存放的是所有项目都会用到的一些管理类,在之后我也会在整理UI框架(UGUI与FairyGUI)与一些专用框架(例如鼠标指针管理框架与单机rpg的任务管理框架).

UnityPackage的目录结构

因为最后需要把框架整体打包作为一个”轮子”来给其他项目使用,所以目录结构就特别重要,这里我写好的这个框架的目录结构如下:
目录结构

  • plugins下有解析json的dll文件,这里我使用LitJson来解析json信息.
  • Resources下的ManagerPrefab里是对应管理类的预制体,身上挂载着对应的管理脚本.
  • Resources下的UpdateData下的Cofig里存放着需要修改的本地信息文件(XML或Json)的信息Json文件.
  • Scripts下的FrameWork里面存放着在基础框架里的一些管理类,在下面的内容中会详细介绍

框架管理类的类型信息(ManagerType)

在Config下的ManagerType中添加拥有的管理类的枚举(本框架中有soundmanager与updatedataManager),若导入其他具有管理类的框架,只需制作挂在管理类的预制体并添加在Resources>ManagerPrefabx下即可,系统会在开始游戏时自动加载所有挂在管理类的预制体(GameManager类实现).

ManagerType.cs

/// <summary>
/// 管理预制体的类型
/// 可根据内容修改
/// </summary>
public enum ManagerType
{
    SoundManager,//声音管理
    UpdateDataManager//本地数据更新管理
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

单例模板类(Singleton)

对于框架的管理类来说(例如 GameManager等),一般都是在系统中唯一的,所以我们可以采用单例模式来实现这个需求,但如果每个管理类都需要设计一个单例模式,会导致有大量的重复代码,所以我们可以抽象出一个单例基类,让所有管理类来继承这个基类,从而实现单例模式.

Singleton.cs

using System;
using System.Collections.Generic;
using System.Text;
using UnityEngine;
/// <summary>
/// 单例模板类
/// </summary>
/// <typeparam name="T">需要单例的类型</typeparam>
public abstract class Singleton<T> : MonoBehaviour
    where T : MonoBehaviour
{
    #region 数据成员
    //静态私有成员
    private static T m_instance = null;
    //静态共有属性
    public static T Instance
    {
        get { return m_instance; }
    }
    #endregion

    /// <summary>
    /// 在Awake中完成单例模式的赋值
    /// </summary>
    protected virtual void Awake()
    {
        m_instance = this as T;
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29

其他

在下篇博客中,我将介绍基础框架的两个核心类—GameManagerM与SoundManager的实现思路.

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/weixin_40725706/article/detail/761623
推荐阅读
相关标签
  

闽ICP备14008679号