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

Unity3D脚本中文教程1.6

[复制链接]

1602

主题

1

听众

2万

积分

资深设计师

Rank: 7Rank: 7Rank: 7

纳金币
24658
精华
6

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

跳转到指定楼层
楼主
发表于 2012-5-14 14:31:34 |只看该作者 |倒序浏览
概览:实例化

实例化,复制一个物体。包含所有附加的脚本和整个层次。它以你期望的方式保持引用。到外部物体引用的克隆层次将保持完好,在克隆层次上到物体的引用映射到克隆物体。

实例化是难以置信的快和非常有用的。因为最大化地使用它是必要的。

例如, 这里是一个小的脚本,当附加到一个带有碰撞器的刚体上时将销毁它自己并实例化一个爆炸物体。

var explosion : Transform;

// 当碰撞发生时销毁我们自己

// 并生成给一个爆炸预设

function OnCollisionEnter (){

Destroy (gameObject);

var  theClonedExplosion : Transform;

theClonedExplosion = Instantiate(explosion, transform.position, transform.rotation);

}

实例化通常与预设一起使用

概览:Coroutines & Yield

在编写游戏代码的时候,常常需要处理一系列事件。这可能导致像下面的代码。

private var state = 0;

function Update()

{

if (state == 0) {

// 做步骤0

state = 1;

return;

}

if (state == 1) {

// 做步骤1

state = 2;

return;

}

// …

}

更方便的是使用yield语句。yield语句是一个特殊类型的返回,这个确保在下次调用时该函数继续从该yield语句之后执行。

while(***e) {

// 做步骤0

yield; //等待一帧

// 做步骤1

yield; //等待一帧

// ...

}

你也可以传递特定值给yield语句来延迟Update函数的执行,直到一个特定的事件发生。

// 做一些事情

yield WaitForSeconds(5.0); //等待5秒

//做更多事情…

可以叠加和连接coroutines。

这个例子执行Do,在调用之后立即继续。

Do ();

print ("This is printed immediately");

function Do ()

{

print("Do now");

yield WaitForSeconds (2);

print("Do 2 seconds later");

}

这个例子将执行Do并等待直到它完成,才继续执行自己。

//链接coroutine

yield StartCoroutine("Do");

print("Also after 2 seconds");

print ("This is after the Do coroutine has finished***cution");

function Do ()

{

print("Do now");

yield WaitForSeconds (2);

print("Do 2 seconds later");

}

任何事件处理句柄都可以是一个coroutine

注意你不能在Update或FixedUpdate内使用yield,但是你可以使用StartCoroutine来开始一个函数。

参考YieldIns***ction, WaitForSeconds, WaitForFixedUpdate, Coroutine and MonoBehaviour.StartCoroutine获取更多使用yield的信息。
分享到: QQ好友和群QQ好友和群 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
转播转播0 分享淘帖0 收藏收藏0 支持支持0 反对反对0
回复

使用道具 举报

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

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

GMT+8, 2024-11-29 16:27 , Processed in 0.125570 second(s), 29 queries .

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

© 2008-2019 Narkii Inc.

回顶部