单例
单例也是一个类, 但这个类只会实例化一次, 适合用于游戏中不重复的对象(eg:单人游戏中的玩家对象)
确保类只会实例化一次的方法就是在类里声明一个静态的本类对象, 构造函数里要判断该静态对象是否为空, 为空就执行构造函数保存在静态对象并返回静态对象, 不为空就意味着已经实例化了跳过构造直接返回静态对象.
public class Singleton
{
private static Singleton instance;
private Singleton() {}
public static Singleton GetInstance()
{
if (instance == null)
{
instance = new Singleton();
}
return instance;
}
}
接口
先声明接口, 再声明继承接口的类, 可以再代码编写更容易明白类的意义, 以接口作为参数类型能很方便的在后期进行扩展.
接口和类很相似, 但接口只声明不实现, 接口的作用就是为大量重复且有相同特性的类做规范, 使用接口声明的类必须实现接口中的声明
声明接口
public interface IShape
{
double GetArea();
}
声明继承该接口的类
public class Rectangle : IShape
{
public double Width { get; set; }
public double Height { get; set; }
public double GetArea()
{
return Width * Height;
}
}
以接口为参数类型传入继承该接口的类
public void fun(Ishape obj)
{
obj.GetArea();
}
void Start()
{
Rectangle rect = new Rectangle();
Debug.Log(fun(rect));
}
框架
框架可以使代码更有结构性, 较为复杂的游戏开发都应该使用框架, 要自己写一个框架需要有丰富的开发经验, 因此我选择使用大佬写好的框架(本栏的学习中应该都是使用Qframework框架, 作者:凉鞋, 可直接站内搜索)
为项目引入框架
第一步 下载框架文件
第二步 继承框架类
Qframework框架的基础使用类
ISystem
继承该类的对象都是单例, 游戏中的大部分操作都可以集成System, 再使用系统内的方法进行操作, 这样很容易进行整体性的玩法更新.
案例链接:
IModel
较为复杂的游戏对象有很多属性,可以将重要对象的属性集成为Model,可以方便的设置属性改变时的触发事件.
IContrl
要让Unity内的对象使用框架内的System/Mode/Cmd之类的方法与属性,需要编写脚本并让脚本里的类继承IContrl