生命周期函数
一、帧的概念 游戏的本质就是一个死循环,每一次循环处理游戏逻辑就会更新一次画面,之所以能看到画面在动,是因为切换画面的速度达到一定时,人眼就认为画面是流畅的。 一帧就是执行一次循环 个人多年游玩游戏来说,我最低只能接收60帧,不然会头晕。 Unity底层已经帮助我们做好了死循环,我们需要学习Unity的生命周期函数,利用它们做好规则来执行我们的游戏逻辑就行了。 二、生命周期函数的概念 所有继承MonoBehavior的脚本 最终都会挂载到Game Object上。 生命周期函数 就是该脚本依附的GameObject对象从出生到消亡整个生命周期中会通过反射自动调用的一些特殊函数。 Unity帮助我们记录了一个GameObject对象依附了哪些脚本。Unity会自动的得到这些GameObject对象,通过反射去执行一些固定名字的函数。 三、生命周期函数 注:生命周期函数的访问修饰符一般为private和protected 。 注:因为不需要外部去调用生命周期函数,都是Unity自己帮助我们调用的。 1. Awake 当对象(自己这个脚本类对象)被...
C#进阶之重要知识点补充
C#进阶之重要知识点补充一、泛型1. 泛型是什么 泛型实现了类型参数化,达到代码重用的目的,通过类型参数化来实现同一份代码上操作各种类型。 解释: 泛型相当于类型占位符 定义类或者方法时,可以使用替代符等代表变量类型 当真正使用类或者方法时再具体指定类型 说白了就是类型参数化 2.泛型分类 泛型类 * 基本语法: 1class 类名 <泛型占位字母> 泛型接口 * 基本语法: * ```c# interface 接口名 <泛型占位字母> 12345678910* 泛型函数 * 基本语法: * ```c# 函数名<泛型占位字母>(参数列表) { //函数体 } 注意: 泛型占位字母可以有多个,必须用逗号隔开。 * 具体实现如下 12345678class Test1 <T1,T2,T3>//泛型类{ public T1 a; public T2 b; public T3...
Unity小框架
《唐老师基础小框架解析与代码》一.单例模式基类1.不继承MonoBehaviour的单例模式基类 (1).为什么要写单例模式基类 用面对对象的思想避免代码冗余(多余、重复) 代码(普通单例模式) 1234567891011121314public class TestMgr{ private static TestMgr instance; public static TestMgr Instance { get { if(instance==null) instance=new TestMgr(); return instance; } } } ...
C#进阶之知识点拓展
C#进阶之知识点拓展一、.Net相关知识1. 微软的.Net 微软的.Net既不是编程语言也不是框架 你可以简单为.Net本质上就是微软为自己的一系列产品取的一个代号。 包含的内容: 框架体系:.Net Framework、.Net Core、Mono等等。 开发语言:C#,VB,F#等等(C#是.Net平台主推的开发语言) 开发工具:Visual Studio、Visual Studio Code等等。 2.微软做.Net平台的目的 (1). 跨语言 只要是面向.NET平台的编程语言(C#,VB,C++,F#等等),用其中一种语言编写的内容可以无缝地用在另一种语言编写的应用程序中。 (2). 跨平台 一次编译,不需要任何代码修改,应用程序就可以运行在任意有.NET框架实现的操作系统上,即代码不依赖于操作系统,也不依赖硬件环境。 3.如何实现的跨语言?(1). CLS(Common Language ...
Unity性能优化
Unity 性能优化 一、优化相关前提 1.Unity游戏安装包/运行卡的原因?Unity编译打包时,使用C#编写的脚本会通过Mono的C#编译器打包成IL(中间语言),然后在Mono的虚拟机中运行。 用Mono方式来进行打包的程序会出现一堆动态链接库,程序员写的程序控制逻辑就在Assembly-CSharp.dll动态链接库里面 这个动态链接库里包括了所有的功能代码在里面,当要执行程序时,就必须在程序启动之前把它加载到Mono虚拟机里面 Mono本身是一个虚拟机,因为C#本身是运行在DotNet平台上面的,而DotNet平台本身就是一个基于虚拟机的的平台,Mono虚拟机是对DotNet虚拟机的跨平台移植 IL2CPP打包方式...