/*脚本是附加在游戏体上用于定义游戏对象行为的指令代码

  • unity支持三种高级编程语言:c#,Javascript
  • 语法结构
  • using 命名空间;
  • public class 类名:MonoBehaviour
  • {
  •  void 方法名()
    
  •  {
    
  •  }
    
  • }
  • 文件名与类名必须一致
  • 写好的脚本必须附加到物体才能执行
  • 附加到游戏物体的脚本类必须从MonoBehaviour类继承
    *物体只是类的对象
  • 编译过程:
  • 源代码(CLS)->中间语言(unity中为dll文件)->(Mono Runtime)->机器码
  • 开发工具
  • MomoDevolop
  • unity 自带脚本编译器,创建Mono应用程序,适用于Linux,Mac OS X和windows的集成开发环境,支持c#,BOO和Java script等
  • 高级编程语言
  • VS
  • 微软公司的开发工具,包括了整个软件生命周期中需要的大部分工具
  • 脚本的生命周期:unity脚本从唤醒到销毁的全过程
  • 初始阶段
  • Awake唤醒:
  • 当物体载入时立即调用一次:常用于在游戏开始前进行初始化,可以判断当满足某种条件执行此脚本 this。enable=true;
    
  • OnEnable当可用:
  •  每当脚本对象启用时调用。
    
  • Start开始:
  •  物体载入且脚本对象启用时被调用有一次。常用于数据或游戏逻辑初始化,执行时机晚于  Awake。
    
  • 物理阶段
  • FixUpdate 固定更新:
  •  脚本启用后,固定时间被调用,适用于对游戏对象做物理操作,例如移动等
    
  •  设置更新频率;"Edit"-->"Project Setting"-->"Time"-->"FixUpdate"值,默认为0.02s
    
  • Update更新:
  •   脚本启用后,每帧渲染场景时调用,频率与设备性能和渲染量有关
    
  • LateUpdate延迟更新:
  •   在Upfate函数被调用后执行,适用于跟随逻辑
    
  • 输入事件
  • OnMouseEnter鼠标移入:
  •      鼠标一道当前Collider时调用。
    
  • OnMouseOver鼠标经过:
  •      鼠标经过当前Collider时调用
    
  • OnMouseExit鼠标移开:
  •      鼠标离开当前Collider时调用
    
  • OnMouseDown鼠标按下:
  •      鼠标按下时被调用
    
  • OnMouseUp鼠标抬起:
  •      鼠标在当前Collider上抬起时调用
    
  • 场景渲染
  • OnBecameVisible当可见:
  •      当Mesh Renderer在任何相机上可见时调用
    
  • OnBecameInvisible当不可见:
  •      当MeshRenderer在任何相机上都不可见时调用
    

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
///
///脚本生命周期
///
public class Lifecycle : MonoBehaviour
{
//脚本:.cs的文本文件 类文件
//附加到游戏物体中
//c#类:
//字段
//属性(一般脚本中不写,在面板中无法显示)
//构造函数
//方法
[SerializeField]//序列化字段,在编译器中显示私有变量
private int a=100;
[HideInInspector]//作用:在编译器中隐藏字段
public float b = 0;
//public Lifecycle()
//{//不要在脚本中写构造函数
// //不能在子线程中访问主线程成员
// float c = time.time;
//}
public Lifecycle()
{
Debug.Log(“构造函数”);
}
//初始阶段//
private void Awake()//执行时机:创建游戏对象(此时未必已启用脚本) 立即开始执行 只执行一次 作用:初始化
{
//Debug.Log(“Awake–” + Time.time+"–"+this.name);
}
private void Start()//后于Awake函数 执行时机:创建游戏对象–>脚本启用–>执行 只执行一次 作用:初始化
{
int a = 1;//调试过程中输入代码:
int b = 2;//右键–快速监视
int c = a + b;//查看“即时窗口”
Debug.Log(“start–” + Time.time+"–"+this.name);
}
//物理阶段
*//
private void FixedUpdate()//每隔固定时间执行一次。(时间可修改)适用性:适合对游戏对象做物理操作(移动、旋转…)不会受到渲染时间影响
{ //渲染时间不固定(每帧渲染量不同,机器性能不同)
//Debug.Log(Time.time);
}
private void OnMouseDown()
{
Debug.Log(" OnMouseDown");
}
private void Update()//执行时机:渲染帧执行,执行间隔不固定 适用性:处理游戏逻辑
{
//单帧调试:启动调试 运行场景 暂停游戏 加断点 单帧运行 结束调试
}
}

Logo

瓜分20万奖金 获得内推名额 丰厚实物奖励 易参与易上手

更多推荐