五、Unity C#编程
游戏运行模式
- 程序首先初始化
- 然后进入一个while(true)循环 检查是否有消息(包括鼠标事件等)
若有消息 则处理后 然后计算 绘制场景
程序处在这么一个大循环中 不断检查是否有事件 若有则处理
帧频
在while循环中 游戏会有一秒循环的次数 比如CPU可以一秒绘制80次画面
人对于画面的流畅感若到了60 其实已经非常流畅了
帧频若达到60 则可以不用继续提升了 若继续提升 其实也感觉不出来 而且会更加消耗CPU
因此 在绘制的时候可以看时间是否到达 若还没到 则sleep
1/60=0.0166秒 但比如只有0.01秒就全部处理完了 那么可以休眠0.0066秒 休眠是为了节约CPU
因此 在while中 有:
- 事件处理(包括各种事件)
- 绘制场景
- 检测是否需要休眠(维持帧频在60左右)
若CPU比较低端 那么绘制速度会变慢 此时while会不断地绘制 就不会循环了
FPS
FPS有两个概念
- 1、帧频 (Frames Per Second)
- 2、第一人称射击 (First Person Shoot)
🚩组件的代码入口
每个节点都有多个组件
因此 组件是经常面对的开发模式
- 当组件被挂载到节点的时候 会调用组件的一个函数:Awake
- 当节点在while循环里 刷新前 会调用Start
- 当节点在while循环里 要处理的时候 会调用Update
每个while循环要处理的时候都会调用每个组件的Update
模块化开发 & 代码模块
实际上 组件成了很多入口的模块
因此 其实是根据Unity逻辑来开发模块
给Unity写代码 实际上是给Unity写代码模块
开发
先在Project的scripts里右键 -> Create -> C# Script 以创建一个C#代码块
此时的代码是一个组件 组件只有挂载到节点上才会在Unity的while里循环被调用
在Hierarchy右键 -> Create Empty 创建一个根节点
点击Add Component添加组件
点击Scripts 然后选择脚本即可:
双击Project里的脚本图标 即可打开Visual Studio编辑器
自动生成的代码:
using UnityEngine;
using System.Collections;
public class game_scene : MonoBehaviour {
// Use this for initialization
void Start () {
}
// Update is called once per frame
void Update () {
}
}
改一下:
using UnityEngine;
using System.Collections