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

Unity3D脚本中文教程2.38

[复制链接]

5552

主题

2

听众

8万

积分

首席设计师

Rank: 8Rank: 8

纳金币
-1
精华
11

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

跳转到指定楼层
楼主
发表于 2012-5-31 15:23:25 |只看该作者 |倒序浏览
Object



Unity所涉及的所有物体的基类。任何从Object继承的公有变量将作为一个目标显示在监视面板中,允许你从GUI中设置。

变量

◆ var hideFlags : HideFlags 描述:该物体是否被隐藏,保存在场景中或被用户修改。

◆ var name : string

描述:对象的名称。组件与游戏物体和所有附加的组件共享相同名称。

//改变物体的名称为Hello

name = "Hello";

函数

◆ function GetInstanceID () : int 描述:返回该物体的实例id。一个物体的实例ID总是唯一。

描述:返回该物体的实例id。

一个物体的实例id总是唯一的。

print(GetInstanceID());

类方法

◆ static function Destroy (obj : Object, t : float = 0.0F) : void

描述:移除一个游戏物体,组件或资源。物体obj将被小火或者t秒后被销毁。如果obj是一个Component它将被从GameObject中移除。如果obj是一个GameObject它将销毁这个GameObject,以及它的组件和所子对象。实际的销毁总是推迟到下个Update来临时,但总在渲染前完成。

//销毁这个游戏物体

Destroy (gameObject);

//从物体上移除该脚本

Destroy (this);

//从游戏物体上移除刚体组件

Destroy (rigidbody);

//加载该游戏物体后5秒删除

Destroy (gameObject, 5);

//当玩家按下Ctrl时移除名为FoooScript的脚本

function Update () {

if (Input.GetButton ("Fire1") && GetComponent (FooScript))

Destroy (GetComponent (FooScript));

}

◆ static function DestroyImmediate (obj : Object, allowDestroyingAssets : bool = false) : void
描述:立即销毁物体。强烈建议使用Destroy代替它。该函数应该只在编写编辑器代码时使用,因为延迟的销毁将不会再编辑器模式调用。游戏代码中建议使用Destroy。Destroy总是延迟的(但是在同一帧执行)。小心使用该函数,因为它能永久的销毁资源。

◆ static function DontDestroyOnLoad (target : Object) : void

描述:加载新场景时确保物体target不被自动销毁。当加载一个新的关卡时,场景中的所有物体都会被销毁,然后心关卡中的物体将被加载。为了在关卡加载的时候保持物体在上面调用DontDestroyOnLoad。如果物体是一个组件或游戏物体,那么它的整个变换层次将不会被销毁。

//保证该游戏物体及其变化子物体在载入新场景时不会被销毁。

function Awake () {

DontDestroyOnLoad (this);

}
◆ static function FindObjectOfType (type : Type) : Object

描述:返回第一个类型为Type的已激活加载的物体。参见Object.FindObjectsOfType 。

◆ static function FindObjectsOfType (type : Type) : Object[]

描述:返回所有类型为Type的已激活加载的物体。

参见Object.FindObjectsOfType 。

它将返回任何资源(网格、纹理、预设等)或已激活加载的物体。

//当点击该物体,它将禁用场景中所有铰链中的弹簧。

function OnMouseDown () {

hinges = FindObjectsOfType (HingeJoint);

for (var hinge : HingeJoint in hinges) {

hinge.useSpring = false;

}

}

c#版

public class Something : MonoBehaviour{

void OnMouseDown(){

HingeJoint[] hinges = FindObjectsOfType<HingeJoint>();

for (HingeJoint hinge in hinges) {

hinge.useSpring = false;

}

}

}


◆ static function Instantiate (original : Object, position : Vector3, rotation : Quaternion) : Object

描述:克隆original物体并返回该克隆。防御position兵设置旋转为rotation,然后返回该克隆。本职上与cmd-d相同,并移动到给定位置。如果一个游戏物体、组件或脚本实例被传入,Instantiate将克隆整个游戏物体层次,所有的子对象也被克隆。所有游戏物体被激活。参加:预设实例化的深入讨论。

//实例化预设的10个拷贝,间隔为2单位。

var prefab : Transform;

for (var i=0;i<10;i++) {

Instantiate (prefab, Vector3(i * 2.0, 0, 0), Quaternion.identity);

}

Instantiate更多常用于实例化投射物、AI敌人,粒子爆炸或b破损的物体。

//实例化一个刚体,然后设置速度。

var projectile : Rigidbody;

function Update () {

//按下ctrl时,发射一个物体

if (Input.GetButtonDown("Fire1")) {

//以该变化位置与旋转实例化投射物

var clone : Rigidbody;

clone = Instantiate(projectile, transform.position, transform.rotation);

//沿当前物体Z轴,给克隆体一个初始速度

clone.velocity = transform.TransformDirection (Vector3.forward * 10);

}

}

实例化也能直接克隆脚本实例。整个游戏物体层级将被克隆,并且克隆脚本的实例将被返回。

//初始化一个附加了Missile脚本的预设

var projectile : Missile;

function Update () {

//按下ctrl时,发射一个物体

if (Input.GetButtonDown("Fire1")) {

//以该变化位置与传转实例化投射物

var clone : Missile;

clone = Instantiate(projectile, transform.position, transform.rotation);

//设置火箭超市销毁为5秒

clone.timeoutDes***ctor = 5;

}

}
分享到: QQ好友和群QQ好友和群 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
转播转播0 分享淘帖0 收藏收藏0 支持支持0 反对反对0
回复

使用道具 举报

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

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

GMT+8, 2025-6-10 14:57 , Processed in 0.060944 second(s), 28 queries .

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

© 2008-2019 Narkii Inc.

回顶部