查看: 1484|回复: 0
打印 上一主题 下一主题

Unity3D脚本中文教程1.7

[复制链接]

1602

主题

1

听众

2万

积分

资深设计师

Rank: 7Rank: 7Rank: 7

纳金币
24658
精华
6

最佳新人 活跃会员 热心会员 灌水之王 突出贡献

跳转到指定楼层
楼主
发表于 2012-5-14 14:33:24 |只看该作者 |倒序浏览
概览:用C#编写脚本

除了语法,使用C#或者Boo编写脚本还有一些不同。最需要注意的是:

1.从MonoBehaviour继承

所有的行为脚本必须从MonoBehaviour继承(直接或间接)。在Javascript中这自动完成,但是必须在C#或Boo脚本中显示申明。如果你在Unity内部使用Asset -> Create -> C Sharp/Boo Script菜单创建脚本,创建模板已经包含了必需的定义。

public class NewBehaviourScript : MonoBehaviour {...} // C#

class NewBehaviourScript (MonoBehaviour): ... # Boo

2.使用Awake或Start函数来初始化

Javascript中放置在函数之外的代码,在C#或Boo中要放置在Awake或Start中。

Awake和Start的不同是Awake在场景被加载时候运行,而Start在第一次调用Update或FixedUpdate函数之前被调用,所有Awake函数在任何Start函数调用之前被调用。

3.类名必须与文件名相同

Javascript中,类名被隐式地设置为脚本的文件名(不包含文件扩展名)。在c#和Boo中必须手工做。

4.在C#中Coroutines有不同语法。

Coroutines必有一个IEnumerator返回类型,并且yield使用yield return… 而不是yield…

using System.Collections;

using UnityEngine;

public class NewBehaviourScript : MonoBehaviour {

// C# coroutine

IEnumerator SomeCoroutine ()

{

// 等一帧

yield return 0;

//等两秒

yield return new WaitForSeconds (2);

}

}

5.不要使用命名空间

目前Unity还不支持将代码放置在一个命名空间中,这个需要将会出在未来的版本中。

6.只有序列化的成员变量会显示在检视面板中

私有和保护成员变量只在专家模式中显示,属性不被序列化或显示在检视面板中。

7.避免使用构造函数

不要在构造函数中初始化任何变量,使用Awake或Start实现这个目的。即使是在编辑模式中Unity也自动调用构造函数,这通常发生在一个脚本被编译之后,因为需要调用构造函数来取向一个脚本的默认值。构造函数不仅会在无法预料的时刻被调用,它也会为预设或未激活的游戏物体调用。

单件模式使用构造函数可能会导致严重的后果,带来类似随机null引用异常。

因此如果你想实现,如,一个单件模式,不要使用构造函数,而是使用Awake。其实上,没有理由一定要在继续自MononBehaviour类的构造函数中写任何代码。

概览:最重要的类

Javascript中可访问的全局函数或C#中的基类

移动/旋转物体

动画系统

刚体

Fps或第二人称角色控制器
分享到: QQ好友和群QQ好友和群 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
转播转播0 分享淘帖0 收藏收藏0 支持支持0 反对反对0
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

手机版|纳金网 ( 闽ICP备2021016425号-2/3

GMT+8, 2024-11-29 18:37 , Processed in 0.102468 second(s), 29 queries .

Powered by Discuz!-创意设计 X2.5

© 2008-2019 Narkii Inc.

回顶部