Unity中的C#编程 B站112-116
.NET dotent简介
Microsoft新一代多语言的开发平台,用于构建和运行应用程序
C#
Microsoft 专为.NET推出的高级语言
##Mono
NOvell公司支持在其他操作系统下开发.NET程序的框架
Unity借助Mono实现跨平台,核心是.NET Framework 框架
脚本是附加在游戏物体上用于定义游戏对象行为的指令代码,就是.cs的文本文件,也就是类文件。 附加到游戏物体中,定义游戏对象行为指令的代码。
Unity支持三种高级编程语言:
C#,javaScript和Boo Script
语法结构
using 命名空间(避免类的重名);
public class 类名:MonoBehaviour
{
void 方法名()
{
Debug.Log("显示调试信息");
print("本质就是Debug.Log方法");
}
}
- 文件名与类名必须一致(不一致就会导致编译失败)
- 写好的脚本必须附加到物品上才执行
- 添加到游戏物体的脚本类必须从MonoBehaviour类继承
在Unity中通过菜单设置修改默认的脚本编辑器:(Unity和vs没有连上的话可以修改这个)
Edit -> Preferences -> External Tools -> External Script Editor
脚本的生命周期
就是 Unity 脚本从唤醒到销毁的过程。也叫必然事件,也叫消息。
如果在编码过程中出现“不一致的行尾提示框”的话,直接点 “是” 就行了。
//序列化字段 作用:在编辑器中显示私有变量,想让别人看到,又不想让别人修改
[SerializeField]
private int a = 100;
//作用:在编辑器中隐藏字段,不希望你在编辑器里修改它,别人能够修改,但是又不想让别人看到他
[HideInInspector]
public int b;
//作用:设置范围
[Range(0,100)]
public int c;
不要在脚本里面写构造函数
-
Awake 唤醒: 当物体载入时立即调用一次;常用于在游戏开始前进行初始化,可以判断当满足某种条件执行此脚本 this.enable=true. -
OnEnable 当可用: 每当脚本对象启用时调用 -
Start 开始:物体载入且脚本对象启用时被调用1次,常用于数据或者游戏逻辑初始化,执行时机晚于Awake -
FixedUpdate 固定更新:脚本启用后,固定时间被调用,适用于游戏对象做物理操作,例如移动等。
↑设置更新频率: Edit -> Project Setting -> Time -> Fixed Timestep值,默认为0.02S
-
OnCollisionXXX碰撞: 当满足碰撞条件时调用。 -
OnTriggerXXX触发:当满足触发条件时调用。 -
Update 更新:脚本启用后,每次渲染场景时调用,频率与设备性能及渲染量有关 -
lateUpdate 延迟更新:在Update函数被调用后,适用于跟随逻辑。 -
输入事件↓ -
OnMouseEnter 鼠标移入:鼠标移入到当前Collider时调用 -
OnMouseOver 鼠标经过:鼠标经过当前Collider时调用 -
OnMouseExit 鼠标离开:鼠标离开当前Collider时调用 -
OnMouseDown 鼠标按下:鼠标按下当前Collider时调用 -
OnMouseUp 鼠按抬起:鼠标在当前Collider上抬起时调用 -
场景渲染↓ -
OnBecameVisible 当可见: 当Mesh Renderer 在任何相机 可见时调用 -
OnBecameInvisible 当不可见:当Mesh Renderer 在任何相机上都不可见时调用 -
结束阶段↓ -
OnDisable 当不可用:对象变为不可用或附属游戏对象非激活状态时此函数被调用 -
OnDestory 当销毁:当脚本销毁或附属的游戏对象被销毁时被调用 -
OnAppliacationQuit 当程序结束:应用程序退出时被调用 public class Demo01 : MonoBehaviour
{
// Start is called before the first frame update
public int a = 100;
public int A
{
get
{
return this.a;
}
set
{
this.a = value;
}
}
//*************初始阶段***********
//Awake的执行时机:创建游戏对象,立即执行 永远是Awake先执行,Start后执行
//作用:初始化
private void Awake()
{
// Debug.Log("Awake--" + Time.time+this.name);
}
//Start的执行时机:创建游戏对象,脚本启用之后,才执行
//作用:初始化
private void Start()
{
Debug.Log("Start--" + Time.time+this.name);
}
//*************物理阶段**************
//FixedUpdate固更新的执行时机:每隔固定时间执行一次。(时间可以修改)
//适用性:适合对物体做物理操作(移动、旋转。。。。。),不会受到渲染的影响
private void FixedUpdate()
{//渲染时间不固定(美珍渲染量不同、机器性能不同)
Debug.Log(Time.time);
}
//Update执行时机:渲染帧执行.执行间隔不固定
//适用性:处理游戏逻辑
private void Upadate()
{
}
}
|