Unity脚本 / C# Script

脚本简介

语法结构
using 命名空间;
public class 类名: MonoBehaviour
{
void 方法名()
{
Debug.Log("调试显示信息");
print("本质就是Debug.Log方法");
}
}

开发工具:Visual Studio

Unity 控制台面板Console
Clear 清除所有信息
Collapse 折叠相同消息
Clear on Play 播放时清空消息
Error Pause 如果异常暂停执行

脚本生成周期

脚本生成周期指Unity 脚本从唤醒到销毁的过程。
这部分是unity脚本中的各种方法,之后会有部分的代码展示。

初始阶段

Awake 唤醒
当物体载入时立即调用1次;常用于在游戏开始前进行初始化,(可以判断当满足某种条件执行此脚本this.enable=true 。)

OnEnable 当可用
每当脚本对象启用时调用。

Start 开始
物体载入且脚本对象启用时被调用1次。常用于数据或游戏逻辑初始化,执行时机晚于Awake。

物理阶段

FixedUpdate固定更新
脚本启用后,固定时间被调用,适用于对游戏对象做物理操作,例如移动等。
设置更新频率:“Edit”-->“Project Setting”-->“Time”-->“Fixed Timestep”值,默认为0.02s.

输入事件
•OnCollisionXXX碰撞:当满足碰撞条件时调用。

•OnTriggerXXX触发:当满足触发条件时调用。

•OnMouseEnter鼠标移入:鼠标移入到当前Collider 时调用。

•OnMouseOver鼠标经过:鼠标经过当前Collider 时调用。

•OnMouseExit鼠标离开:鼠标离开当前Collider 时调用。

•OnMouseDown鼠标按下:鼠标按下当前Collider 时调用。

•OnMouseUp鼠标抬起:鼠标在当前Collider 上抬起时调用。

游戏逻辑
Update 更新
脚本启用后,每次渲染场景时调用,频率与设备性能及渲染量有关。

LateUpdate 延迟更新:
在Update 函数被调用后执行,适用于跟随逻辑。(与Update在同一帧执行,只是有先后差别,实际操作时可以直接写进Update)

场景渲染
OnBecameVisible当可见
当MeshRenderer 在任何相机上可见时调用。

OnBecameInvisible当不可见
当MeshRenderer 在任何相机上都不可见时调用

结束阶段

OnDisable当不可用
对象变为不可用或附属游戏对象非激活状态时此函数被调用。

OnDestroy当销毁
当脚本销毁或附属的游戏对象被销毁时被调用。

OnApplicationQuit当程序结束
应用程序退出时被调用。

public class Lifecycle : MonoBehaviour
{
    //脚本: .cs的文本文件  类文件
    //       附加到游戏物体重,定义游戏对象行为指令的代码

    //c#类:
    //字段
    //属性
    //构造函数
    //方法

    //脚本:
    //字段
    //方法

    //序列化字段 作用:在编译器中显示私有变量
    [SerializeField]
    private int a;

    //作用:在编译器中隐藏字段
    [HideInInspector]
    public float b;

    //作用:给定数字的范围
    [Range(0,100)]
    public int c;

    //属性:在编译器中不能显示,通常脚本中不写

    //不要在脚本中写构造函数
    //1.调用时机不是物体创建
    //2.不能在子线程中访问主线程成员

    //*************初始阶段***************
    //Debug.Log() 在unity里的控制台输出

    //Awake执行时机:创建游戏对象-->立即执行1次(早于Start)
    //作用:初始化
    private void Awake()
    {
        //Debug.Log("Awake--" + Time.time + "--" + this.name);
    }

    //Start执行时机:创建游戏对象-->脚本启用-->执行代码1次
    //作用:初始化
    private void Start()
    {
        Debug.Log("Start--" + Time.time + "--" + this.name);
    }

    //*************物理阶段***************
    
    //FixedUpdate执行时机:每隔固定时间更新一次,默认值为0.02s执行一次
    //适用性:适合对物体做物理操作(移动、旋转...),不会受到渲染影响
    private void FixedUpdate()
    {//渲染时间不固定(每帧渲染量不同、机器性能不同)
        //Debug.Log(Time.time);
    }

    //每当鼠标点击游戏物体执行(前提是物体拥有碰撞组件Box Collider)
    private void OnMouseDown()
    {
        Debug.Log("OnMouseDown");
    }

    //Update执行时机:渲染帧执行,执行间隔不固定
    //适用性:适合处理游戏逻辑
    private void Update() {}
}

API 函数库

API(Application Programming Interface)应用程序编程接口,是一些预先定义的函数。
函数实在是太多了,无法一一例举,在这里只写几个常用的。

常用API

Component
Component类提供了查找(在当前物体的后代与先辈)组件的功能
•常用属性
gameObject transform collider renderer……
•常用方法
GetComponent GetComponentInChildren GetComponentInParent……

Transform
Transform类提供了查找(父,根,子)变换组件、改变位置、角度 、大小功能
•常用属性
position localPosition parent forward……
•常用方法
Translate Rotate TransformPointFind SetSiblingIndex……

GameObject
•常用属性
transform activeInHierarchy activeSelftag……
•常用方法
AddComponentFind FindGameObjectsWithTag Object.FindObjectOfType……

ObJect
Object
•常用属性
name……
•常用方法
Instantiate Destroy FindObjectOfType FindObjectsOfType……

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 213,558评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,002评论 3 387
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 159,036评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,024评论 1 285
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,144评论 6 385
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,255评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,295评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,068评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,478评论 1 305
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,789评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,965评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,649评论 4 336
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,267评论 3 318
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,982评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,223评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,800评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,847评论 2 351

推荐阅读更多精彩内容