脚本

脚本用于响应玩家输入、事件响应、生成生动的效果、甚至是构建自定义AI。



脚本综述

介绍Object怎样受到脚本的控制,以及Unity特征和Mono runtime的关系。


创建和应用脚本

GameObject是被Components控制的,虽然Unity内置的Components已经很好了,但你会发现我们还是需要用脚本创建自己的Components。

有2种语言,C#和UntiyScript。

怎么创建脚本呢?

Assets > Create > C# Script

创建好的脚本是什么样的呢?

默认有2个函数,Start()和Update()。

怎么用这个脚本呢?

把它拖到Object上,作为一个Components。


变量和检视面板

你可以定义一个public变量,并在检视面板上看到它,还可以给它赋值。


用Components控制Object

一般我们可以通过编辑器控制Object的属性,但这是静态的,用脚本的不同在于可以动态的控制Object的属性。

怎么访问Component呢?

用函数GetComponent。

怎么访问其他Object呢?

创建一个public的GameObject变量,把其他的Object拖动到检视面板的public变量处。(Transform同理)

怎么找到Child Objects?

Transform.Find

怎么通过Name或者Tag找到Object?

GameObject.FindGameObject.FindWithTagGameObject.FindGameObjectsWithTag


事件函数

Unity通过事件函数来进行控制,比如Start和Update,还有更多的函数可供应用。

有哪些一般的更新事件?

Update(),FixedUpdate(),LateUpdate()。

有哪些初始化事件?

Start,Awake。

有哪些GUI事件?

OnGUI,OnMouseOver,OnMouseDown。

有哪些物理事件?

OnCollisionEnterOnCollisionStayOnCollisionExitOnTriggerEnterOnTriggerStayOnTriggerExit


时间和帧速率的管理

两次Update调用之间的时间长度不是恒定的。

所以如果帧率是10毫秒,那么每秒Update100次,如果帧率是25毫秒,那么每秒Update40次,就会有问题。

这时,我们就要用到Time.deltaTime。(distancePerSecond * Time.deltaTime)

什么是Fixed Timestep?

Unity的物理系统需要固定的时间步来进行精准的模拟。(Time ManagerTime.fixedDeltaTime

什么是Maximum Allowed Timestep?

简单来说,当Fixed Timestep引起物理系统运算变慢时,要用到这个东西,它在Time Manager里可以设置。

什么是Time Scale?

就是速率,1表示正常,0.5表示半速。

什么是Capture Framerate?

有时候我们会把游戏录成视频,录制过程会耗费大量时间,就会用到这个东西,设置它保证游戏的流畅。


创建和销毁GameObjects

Instantiate,Destroy


协同程序

举个例子,当你想把一个物体慢慢变透明时,不可能在一帧内完成它,因为那样就看不到过程了,此时,你可以用到协同程序。

IEnumerator,yield return,StartCoroutine

它会单独形成一个函数,返回一次值后,把处理权交还给Unity,在下次Update时,再把处理权要过来进行下一次处理。


命名空间

防止函数名称冲突。

namespace XXX,using XXX。


属性

放在类、函数等上的,用[ ]括起来的,表明作用的东西。


事件函数的执行次序


理解自动内存管理

我们调用函数中的参数,会把参数拷贝一份放在存储器中,如果参数是一些数字,那么它很小,没问题,但如果参数是Object、array呢?太大了,会很费存储空间,效率也低,因此,就要用到pointer,它只是记录了存储地址,只要改变他就好了。

内存管理者会搜索所有属于激活状态的引用值,并标记它们为“活着”,当搜索完成时,把剩余的存储空间用于随后的再分配。这就叫“垃圾回收”。

虽然自动处理机制比手动处理机制强,但也需要程序员避免一些错误做法。

有2种策略,小内存就快速频繁的回收(每隔多久就回收一次),大内存就缓慢不频繁的回收(游戏暂停时才回收)。

还有,复用Objects也是一个方法。


平台依赖编译

暂不关注。


专用文件夹和脚本编译命令

Assets

Editor

Editor default resources

Gizmos

Plugins

Resources

Standard Assets

StreamingAssets

脚本的编译有4个阶段。

编译中有个基本原则,在当前编译阶段之后才编译的任何脚本都不能被涉及,在当前或早先阶段被编译的脚本都要确保能用。

4个阶段如下:

(表示没看懂,以后补吧)


类函数

尖括号,void FuncName(),var obj = GetComponent()。


脚本限制

主要针对不同平台说的。


脚本序列化

在Unity引擎中,序列化被用于加载场景、资源等。

(现阶段看不懂,以后再说吧)


Unity事件

感觉是Unity有一套自己的事件系统,不需要我们自己额外写什么了。

UnityEngine.Events


什么是空引用异常?

当你想引用一个不存在的东西时,就会出现空引用异常。


重要的类

MonoBehaviour

Transform

Rigidbody/Rigidbody2D


矢量食谱

虽然矢量描述起来很简单,但它在编程过程中很细微且有巨大的作用。

理解矢量运算

加、减、乘、除。



脚本工具



事件系统

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

推荐阅读更多精彩内容