Skip to content
GameObject

基类 / GameObject

GameObject Class
​

场景中所有实体的基类

Model、Pawn、Camera、AdvancedVehicle、BlockingVolume等逻辑对象均继承自GameObject。

提供复制删除物体,查找获取物体、子物体、脚本等功能。

使用示例:创建一个名为"GameObjectExample"的脚本,在场景中放置模型正方体、圆柱、圆台,父子关系树为:正方体/圆柱/圆台,并把GameObjectExample脚本挂载给正方体。代码如下:
ts
@Component
export default class GameObjectExample extends Script {
    protected onStart(): void {
        let obj: GameObject = this.gameObject;
        console.log(`obj.name = ${obj.name}`);
        console.log(`obj.tag = ${obj.tag}`);
        console.log(`obj.worldTransform = ${obj.worldTransform}`);
        console.log(`obj.localTransform = ${obj.localTransform}`);
        let children = obj.getChildren();
        children.forEach(child => {
            console.log(`obj child = ${child.name}`);
        });
        let path = "正方体/圆柱"
        let cylinderObj = GameObject.getGameObjectByPath(path);
        console.log(`getGameObjectByPath = ${cylinderObj ? cylinderObj.name : "undefined"}`);
        path = "圆柱/圆台"
        cylinderObj = obj.getChildByPath(path);
        console.log(`getChildByPath = ${cylinderObj ? cylinderObj.name : "undefined"}`);
        cylinderObj.onDestroyDelegate.add(()=>{
            console.log(`destroyDelegate 1 = ${cylinderObj ? cylinderObj.name : "undefined"}`);
        });
        cylinderObj.onDestroyDelegate.add(()=>{
            console.log(`destroyDelegate 2 = ${cylinderObj ? cylinderObj.name : "undefined"}`);
        });
        cylinderObj.destroy();
    }
}
@Component
export default class GameObjectExample extends Script {
    protected onStart(): void {
        let obj: GameObject = this.gameObject;
        console.log(`obj.name = ${obj.name}`);
        console.log(`obj.tag = ${obj.tag}`);
        console.log(`obj.worldTransform = ${obj.worldTransform}`);
        console.log(`obj.localTransform = ${obj.localTransform}`);
        let children = obj.getChildren();
        children.forEach(child => {
            console.log(`obj child = ${child.name}`);
        });
        let path = "正方体/圆柱"
        let cylinderObj = GameObject.getGameObjectByPath(path);
        console.log(`getGameObjectByPath = ${cylinderObj ? cylinderObj.name : "undefined"}`);
        path = "圆柱/圆台"
        cylinderObj = obj.getChildByPath(path);
        console.log(`getChildByPath = ${cylinderObj ? cylinderObj.name : "undefined"}`);
        cylinderObj.onDestroyDelegate.add(()=>{
            console.log(`destroyDelegate 1 = ${cylinderObj ? cylinderObj.name : "undefined"}`);
        });
        cylinderObj.onDestroyDelegate.add(()=>{
            console.log(`destroyDelegate 2 = ${cylinderObj ? cylinderObj.name : "undefined"}`);
        });
        cylinderObj.destroy();
    }
}

Hierarchy ​

Table of contents ​

Properties
​

onBeforeDestroyDelegate: MulticastDelegate<() => void>
物体销毁前事件回调
onCustomPropertyChange: Readonly<MulticastDelegate<(path: string, value: unknown, oldValue: unknown) => void>> other
监听自定义属性同步事件
onDestroyDelegate: MulticastDelegate<() => void>
物体销毁后事件回调
onPropertyChange: Readonly<MulticastDelegate<(path: string, value: unknown, oldValue: unknown) => void>>
监听系统属性同步事件

Accessors
​

assetId(): string
获取当前物体使用资源的GUID
gameObjectId(): string
获取物体的唯一标识(唯一标识一个对象的字符串)。
isDestroyed(): boolean
当前物体是否被销毁
isReady(): boolean
当前物体状态
localTransform(): Transform
当前物体本地变换
name(): string
返回当前物体名称
netStatus(): NetStatus
获取当前物体同步状态
parent(): GameObject
获取当前父物体
tag(): string
获取当前物体的标签
worldTransform(): Transform
当前物体世界变换

Methods
​

addComponent<T: extends Script<T>>(constructor: (...args: unknown[]) => T: extends Script<T>, bInReplicates?: boolean): T: extends Script<T>
添加一个脚本组件
asyncGetChildByName(name: string): Promise<GameObject>
异步根据名称查找子物体
asyncReady(): Promise<GameObject>
物体准备好后返回
clone(gameObjectInfo?: GameObjectInfo): GameObject
复制对象
destroy(): void
删除对象
getBoundingBox(nonColliding?: boolean, includeFromChild?: boolean, outer?: Vector): Vector
获取物体包围盒大小
getBounds(onlyCollidingComponents: boolean, originOuter: Vector, boxExtentOuter: Vector, includeFromChild?: boolean): void
获取物体边界
getChildByGameObjectId(gameObjectId: string): GameObject
根据 gameObjectId 查找子物体
getChildByName(name: string): GameObject
根据名称查找子物体
getChildByPath(path: string): GameObject
根据路径查找子物体
getChildren(): GameObject[]
获取子物体
getChildrenBoundingBoxCenter(outer?: Vector): Vector
获取所有子对象包围盒中心点(不包含父对象,父对象不可用返回[0,0,0])
getChildrenByName(name: string): GameObject[]
通过名字查找所有的子物体
getComponent<T: extends Script<T>>(constructor?: (...args: unknown[]) => T: extends Script<T>): T: extends Script<T>
获取指定类型的组件
getComponentPropertys<T: extends Script<T>>(constructor: (...args: unknown[]) => T: extends Script<T>): Map<string, IPropertyOptions>
获取脚本组件属性
getComponents<T: extends Script<T>>(constructor?: (...args: unknown[]) => T: extends Script<T>): T: extends Script<T>[]
获取指定类型的所有组件
getCustomProperties(): string[]
获取所有自定义属性
getCustomProperty<T: extends CustomPropertyType>(propertyName: string): T: extends CustomPropertyType
获取自定义属性
getCustomPropertyChangeDelegate(property): Readonly<MulticastDelegate<(path: string, value: unknown, oldValue: unknown) => void>> other
给定对象属性修改时触发的事件代理
getPropertyChangeDelegate(property): Readonly<MulticastDelegate<(path: string, value: unknown, oldValue: unknown) => void>> other
给定对象属性修改时触发的事件代理
getVisibility(): boolean
获取物体是否被显示
moveBy(velocity: Vector, isLocal?: boolean): void other
按给定的速度矢量随时间平滑地移动对象
moveTo(targetPosition: Vector, time: number, isLocal?: boolean, onComplete?: () => void): void other
在指定时间内从当前位置平滑移动至目标位置
rotateBy(rotation: Quaternion Rotation, multiplier: number, isLocal?: boolean): void other
按给定的旋转量随时间平滑地旋转对象
rotateTo(targetRotation: Quaternion Rotation, time: number, isLocal?: boolean, onComplete?: () => void): void other
在指定时间内从当前旋转平滑变化至目标旋转
scaleBy(scale: Vector, isLocal?: boolean): void other
按每秒给定的缩放矢量随时间平滑缩放对象
scaleTo(targetScale: Vector, time: number, isLocal?: boolean, onComplete?: () => void): void other
在指定时间内从当前缩放平滑变化至目标缩放
setAbsolute(absolutePosition?: boolean, absoluteRotation?: boolean, absoluteScale?: boolean): void
设置物体localTransform是相对于父物体或者世界
setCustomProperty(propertyName: string, value: undefined CustomPropertyType): void
设置自定义属性
setVisibility(status: boolean PropertyStatus, propagateToChildren?: boolean): void
设置物体是否被显示
stopMove(): void other
中断moveTo()、moveBy()的进一步移动
stopRotate(): void other
中断从rotateTo()或rotateBy()的进一步旋转
stopScale(): void other
中断从ScaleTo()或ScaleBy()的进一步缩放
asyncFindGameObjectById(gameObjectId: string): Promise<GameObject>
通过 gameObjectId 异步查找 GameObject
asyncGetGameObjectByPath(path: string): Promise<GameObject>
通过路径异步查找物体
asyncSpawn<T: extends GameObject<T>>(assetId: string, gameObjectInfo?: GameObjectInfo): Promise<T: extends GameObject<T>>
异步构造一个物体
bulkPivotTo(gameObjects: GameObject[], transforms: Transform[]): void
批量设置位置
findGameObjectById(gameObjectId: string): GameObject
通过 gameObjectId 查找物体
findGameObjectByName(name: string): GameObject
通过名字查找物体
findGameObjectsByName(name: string): GameObject[]
通过名字查找物体
findGameObjectsByTag(tag: string): GameObject[]
通过自定义标签获取物体
getGameObjectByPath(path: string): GameObject
通过路径查找物体
spawn<T: extends GameObject<T>>(assetId: string, gameObjectInfo?: GameObjectInfo): T: extends GameObject<T>
构造一个物体

Properties ​

onBeforeDestroyDelegate
​

• onBeforeDestroyDelegate: MulticastDelegate<() => void>

物体销毁前事件回调


onCustomPropertyChange
​

• onCustomPropertyChange: Readonly<MulticastDelegate<(path: string, value: unknown, oldValue: unknown) => void>> other

监听自定义属性同步事件

ts
this.onCustomPropertyChange.add((path, value, oldValue) => {
    console.log(`属性 ${path} 改变了,新值为 ${value},旧值为 ${oldValue}`);
});
this.onCustomPropertyChange.add((path, value, oldValue) => {
    console.log(`属性 ${path} 改变了,新值为 ${value},旧值为 ${oldValue}`);
});

onDestroyDelegate
​

• onDestroyDelegate: MulticastDelegate<() => void>

物体销毁后事件回调


onPropertyChange
​

• onPropertyChange: Readonly<MulticastDelegate<(path: string, value: unknown, oldValue: unknown) => void>>

监听系统属性同步事件

ts
this.onPropertyChange.add((path, value, oldValue) => {
    console.log(`属性 ${path} 改变了,新值为 ${value},旧值为 ${oldValue}`);
});
this.onPropertyChange.add((path, value, oldValue) => {
    console.log(`属性 ${path} 改变了,新值为 ${value},旧值为 ${oldValue}`);
});

Accessors ​

assetId
​

• get assetId(): string

获取当前物体使用资源的GUID

Returns ​

string

gameObjectId
​

• get gameObjectId(): string

获取物体的唯一标识(唯一标识一个对象的字符串)。

Returns ​

string

isDestroyed
​

• get isDestroyed(): boolean

当前物体是否被销毁

Returns ​

boolean

isReady
​

• get isReady(): boolean

当前物体状态

Returns ​

boolean

localTransform
​

• get localTransform(): Transform

• set localTransform(transform): void

当前物体本地变换

Returns ​

Transform

当前物体本地变换

Parameters ​

transformTransform

name
​

• get name(): string

• set name(name): void

Editor

返回当前物体名称

Returns ​

string名称

Editor

设置物体名称

Parameters ​

name string需要设置的名称

netStatus
​

• get netStatus(): NetStatus

获取当前物体同步状态

Returns ​

NetStatusmw.NetStatus

parent
​

• get parent(): GameObject

• set parent(newParent): void

获取当前父物体

Returns ​

GameObject父物体

设置父物体

Parameters ​

newParentGameObject

tag
​

• get tag(): string

• set tag(tag): void

获取当前物体的标签

Returns ​

stringTag

设置当前物体的标签

Parameters ​

tag stringTag

worldTransform
​

• get worldTransform(): Transform

• set worldTransform(transform): void

当前物体世界变换

Returns ​

Transform

当前物体世界变换

Parameters ​

transformTransform

Methods ​

addComponent
​

• addComponent<T>(constructor, bInReplicates?): T

添加一个脚本组件

Parameters ​

constructor (...args: unknown[]) => TScriptComponentClass 添加脚本的类型
default: null
bInReplicates? boolean是否开启同步
default: 在服务端调用,默认会同步;在客户端调用,默认不同步。

Returns ​

TT 新添加的脚本组件

Type parameters ​

Textends Script<T>

asyncGetChildByName
​

• asyncGetChildByName(name): Promise<GameObject>

Editor

异步根据名称查找子物体

Parameters ​

name string名称
range: 字符串最大长度根据不同物体的名称长度决定。

Returns ​

Promise<GameObject>查找的物体

asyncReady
​

• asyncReady(): Promise<GameObject>

物体准备好后返回

Returns ​

Promise<GameObject>准备好的对象

clone
​

• clone(gameObjectInfo?): GameObject

Editor

复制对象

Parameters ​

gameObjectInfo? GameObjectInfo克隆物体的信息
default: null

Returns ​

GameObject克隆的对象

destroy
​

• destroy(): void

删除对象


getBoundingBox
​

• getBoundingBox(nonColliding?, includeFromChild?, outer?): Vector

获取物体包围盒大小

Parameters ​

nonColliding? boolean表示要在边界框中包含非碰撞组件
default:false
includeFromChild? boolean如果为 true,则递归子物体
default:false
outer? Vector接收转换数据的 Vector 对象
default:null

Returns ​

Vectormw.Vector

Precautions

如果 outer 不为空, 返回 outer,否则返回一个新的 Vector 对象,建议传入 outer 来减少 new 对象


getBounds
​

• getBounds(onlyCollidingComponents, originOuter, boxExtentOuter, includeFromChild?): void

获取物体边界

Parameters ​

onlyCollidingComponents boolean是否只包含有碰撞的组件。
originOuter Vector传出参数,设置为物体的中心点坐标。
boxExtentOuter Vector传出参数,设置为物体尺寸的一半。
includeFromChild? boolean是否递归包含子物体
default:undefined

getChildByGameObjectId
​

• getChildByGameObjectId(gameObjectId): GameObject

根据 gameObjectId 查找子物体

Parameters ​

gameObjectId stringgameObjectId
range: 字符串最大长度根据不同类型的 ID 长度决定。

Returns ​

GameObject查找的物体

getChildByName
​

• getChildByName(name): GameObject

Editor

根据名称查找子物体

Parameters ​

name string名称
range: 字符串最大长度根据不同物体的名称长度决定。

Returns ​

GameObject查找的物体

getChildByPath
​

• getChildByPath(path): GameObject

根据路径查找子物体

Parameters ​

path string路径
range: 字符串最大长度根据不同路径长度决定。

Returns ​

GameObject查找的物体

getChildren
​

• getChildren(): GameObject[]

获取子物体

Returns ​

GameObject[]Array<GameObject>

getChildrenBoundingBoxCenter
​

• getChildrenBoundingBoxCenter(outer?): Vector

获取所有子对象包围盒中心点(不包含父对象,父对象不可用返回[0,0,0])

Parameters ​

outer? Vector接收转换数据的 Vector 对象
default:null

Returns ​

Vectormw.Vector

Precautions

如果 outer 不为空, 返回 outer,否则返回一个新的 Vector 对象,建议传入 outer 来减少 new 对象


getChildrenByName
​

• getChildrenByName(name): GameObject[]

通过名字查找所有的子物体

Parameters ​

name string子物体名称
range: 字符串最大长度根据不同类型的名字 ID 长度决定。

Returns ​

GameObject[]符合的子物体数组

getComponent
​

• getComponent<T>(constructor?): T

获取指定类型的组件

Parameters ​

constructor? (...args: unknown[]) => T脚本类型
default:null

Returns ​

T脚本组件
使用示例:创建一个名为"NewScript1"的脚本,通过 getComponent 获取 NewScript 脚本。代码如下:
ts
import NewScript from "./NewScript";
@Component
export default class NewScript1 extends Script {
    protected onStart(): void {
        const script = this.gameObject.getComponent(NewScript);
    }
}
import NewScript from "./NewScript";
@Component
export default class NewScript1 extends Script {
    protected onStart(): void {
        const script = this.gameObject.getComponent(NewScript);
    }
}

Type parameters ​

Textends Script<T>

getComponentPropertys
​

• getComponentPropertys<T>(constructor): Map<string, IPropertyOptions>

获取脚本组件属性

Parameters ​

constructor (...args: unknown[]) => T脚本类型
default:null

Returns ​

Map<string, IPropertyOptions>组件所有属性 Map<key: IPropertyOptions>

Type parameters ​

Textends Script<T>

getComponents
​

• getComponents<T>(constructor?): T[]

获取指定类型的所有组件

Parameters ​

constructor? (...args: unknown[]) => T脚本类型
default:null

Returns ​

T[]脚本组件列表

Type parameters ​

Textends Script<T>

getCustomProperties
​

• getCustomProperties(): string[]

获取所有自定义属性

Returns ​

string[]属性名列表
ts
const attributes = this.getAttributes();
console.log(attributes);
// ["name", "age"]
const attributes = this.getAttributes();
console.log(attributes);
// ["name", "age"]

getCustomProperty
​

• getCustomProperty<T>(propertyName): T

获取自定义属性

Parameters ​

propertyNamestring

Returns ​

T属性值

Type parameters ​

Textends CustomPropertyType

getCustomPropertyChangeDelegate
​

• getCustomPropertyChangeDelegate(property): Readonly<MulticastDelegate<(path: string, value: unknown, oldValue: unknown) => void>> other

给定对象属性修改时触发的事件代理

Parameters ​

property string对象属性名字

Returns ​

Readonly<MulticastDelegate<(path: string, value: unknown, oldValue: unknown) => void>>代理对象

getPropertyChangeDelegate
​

• getPropertyChangeDelegate(property): Readonly<MulticastDelegate<(path: string, value: unknown, oldValue: unknown) => void>> other

给定对象属性修改时触发的事件代理

Parameters ​

property string对象属性名字 例如:'x' 'rotation.x'

Returns ​

Readonly<MulticastDelegate<(path: string, value: unknown, oldValue: unknown) => void>>代理对象

getVisibility
​

• getVisibility(): boolean

获取物体是否被显示

Returns ​

booleanbool

moveBy
​

• moveBy(velocity, isLocal?): void other

按给定的速度矢量随时间平滑地移动对象

Parameters ​

velocity Vector速度
isLocal? boolean是否本地空间生效 default:true
使用示例: 调用方式
ts
let cube = GameObject.spawn<Model>("197386", {
   replicates: true,
   transform: new Transform()
});
cube.moveBy(new Vector(10, 10, 0), true);
let cube = GameObject.spawn<Model>("197386", {
   replicates: true,
   transform: new Transform()
});
cube.moveBy(new Vector(10, 10, 0), true);

moveTo
​

• moveTo(targetPosition, time, isLocal?, onComplete?): void other

在指定时间内从当前位置平滑移动至目标位置

Parameters ​

targetPosition Vector目标位置
time number缓动时间 range: > 0 type: number
isLocal? boolean是否本地空间生效 default:true
onComplete? () => void完成回调方法 default:undefined
使用示例: 调用方式
ts
let cube = GameObject.spawn<Model>("197386", {
   replicates: true,
   transform: new Transform()
});
cube.moveTo(new Vector(1000, 0, 0), 10, true, () => {
   console.log("moveTo complete");
});
let cube = GameObject.spawn<Model>("197386", {
   replicates: true,
   transform: new Transform()
});
cube.moveTo(new Vector(1000, 0, 0), 10, true, () => {
   console.log("moveTo complete");
});

rotateBy
​

• rotateBy(rotation, multiplier, isLocal?): void other

按给定的旋转量随时间平滑地旋转对象

Parameters ​

rotation Quaternion Rotation旋转速度
multiplier number旋转乘数 range: > 0 type: number
isLocal? boolean是否本地空间生效 default:true
使用示例: 调用方式
ts
let cube = GameObject.spawn<Model>("197386", {
   replicates: true,
   transform: new Transform()
});
cube.rotateBy(new Rotation(1, 0, 1), 5, true);
let cube = GameObject.spawn<Model>("197386", {
   replicates: true,
   transform: new Transform()
});
cube.rotateBy(new Rotation(1, 0, 1), 5, true);

rotateTo
​

• rotateTo(targetRotation, time, isLocal?, onComplete?): void other

在指定时间内从当前旋转平滑变化至目标旋转

Parameters ​

targetRotation Quaternion Rotation目标朝向
time number缓动时间 range: > 0 type: number
isLocal? boolean是否本地空间生效 default:true
onComplete? () => void完成回调方法 default:undefined
使用示例: 调用方式
ts
let cube = GameObject.spawn<Model>("197386", {
   replicates: true,
   transform: new Transform()
});
cube.rotateTo(new Rotation(45, 0, 0), 10, true, () => {
   console.log("rotateTo complete");
});
let cube = GameObject.spawn<Model>("197386", {
   replicates: true,
   transform: new Transform()
});
cube.rotateTo(new Rotation(45, 0, 0), 10, true, () => {
   console.log("rotateTo complete");
});

scaleBy
​

• scaleBy(scale, isLocal?): void other

按每秒给定的缩放矢量随时间平滑缩放对象

Parameters ​

scale Vector缩放速度
isLocal? boolean是否本地空间生效 default:true
使用示例: 调用方式
ts
let cube = GameObject.spawn<Model>("197386", {
   replicates: true,
   transform: new Transform()
});
cube.scaleBy(new Vector(1, 1, 0), true);
let cube = GameObject.spawn<Model>("197386", {
   replicates: true,
   transform: new Transform()
});
cube.scaleBy(new Vector(1, 1, 0), true);

scaleTo
​

• scaleTo(targetScale, time, isLocal?, onComplete?): void other

在指定时间内从当前缩放平滑变化至目标缩放

Parameters ​

targetScale Vector目标缩放
time number缓动时间 range: > 0 type: number
isLocal? boolean是否本地空间生效 default:true
onComplete? () => void完成回调方法 default:undefined
使用示例: 调用方式
ts
let cube = GameObject.spawn<Model>("197386", {
   replicates: true,
   transform: new Transform()
});
cube.scaleTo(new Vector(2, 2, 0), 10, true, () => {
   console.log("scaleTo complete");
});
let cube = GameObject.spawn<Model>("197386", {
   replicates: true,
   transform: new Transform()
});
cube.scaleTo(new Vector(2, 2, 0), 10, true, () => {
   console.log("scaleTo complete");
});

setAbsolute
​

• setAbsolute(absolutePosition?, absoluteRotation?, absoluteScale?): void

Editor

设置物体localTransform是相对于父物体或者世界

Parameters ​

absolutePosition? boolean位置是否为相对于世界 default: false
absoluteRotation? boolean旋转是否为相对于世界 default: false
absoluteScale? boolean缩放是否为相对于世界 default: false

setCustomProperty
​

• setCustomProperty(propertyName, value): void

设置自定义属性

Parameters ​

propertyName string-
value undefined CustomPropertyType属性值

setVisibility
​

• setVisibility(status, propagateToChildren?): void

设置物体是否被显示

Parameters ​

status boolean PropertyStatus状态
propagateToChildren? boolean是否设置子物体
default:false

stopMove
​

• stopMove(): void other

中断moveTo()、moveBy()的进一步移动


stopRotate
​

• stopRotate(): void other

中断从rotateTo()或rotateBy()的进一步旋转


stopScale
​

• stopScale(): void other

中断从ScaleTo()或ScaleBy()的进一步缩放


asyncFindGameObjectById
​

• Static asyncFindGameObjectById(gameObjectId): Promise<GameObject>

通过 gameObjectId 异步查找 GameObject

Parameters ​

gameObjectId string物体的 gameObjectId
range: 字符串最大长度根据不同类型的资源 ID 长度决定。

Returns ​

Promise<GameObject>gameObjectId对应的物体

默认是10秒,可以通过 ScriptingSettings.setGlobalAsyncOverTime(1000 * 10) 方式来设置。


asyncGetGameObjectByPath
​

• Static asyncGetGameObjectByPath(path): Promise<GameObject>

通过路径异步查找物体

Parameters ​

path string物体路径
range: 字符串最大长度根据路径 ID 长度决定。不做限制。

Returns ​

Promise<GameObject>路径对应的物体

asyncSpawn
​

• Static asyncSpawn<T>(assetId, gameObjectInfo?): Promise<T>

异步构造一个物体

Parameters ​

assetId string资源 id
range: 字符串最大长度根据不同类型的资源 ID 长度决定。
gameObjectInfo? GameObjectInfo构建物体的信息
default: 选填

Returns ​

Promise<T>构造的物体

资源不存在会先去下载资源再去创建

使用示例:调用方法
ts
let obj = await GameObject.asyncSpawn<Model>("197386", {
    replicates: true,
    transform: new Transform()
});
let obj = await GameObject.asyncSpawn<Model>("197386", {
    replicates: true,
    transform: new Transform()
});

Type parameters ​

Textends GameObject<T>

bulkPivotTo
​

• Static bulkPivotTo(gameObjects, transforms): void

批量设置位置

Parameters ​

gameObjects GameObject[]准备更新Transform的GameObject列表
transforms Transform[]位置提供目标值的Transform列表

findGameObjectById
​

• Static findGameObjectById(gameObjectId): GameObject

通过 gameObjectId 查找物体

Parameters ​

gameObjectId string物体的 gameObjectId
range: 字符串最大长度根据不同类型的资源 ID 长度决定。

Returns ​

GameObjectgameObjectId对应的物体

findGameObjectByName
​

• Static findGameObjectByName(name): GameObject

通过名字查找物体

Parameters ​

name string物体名字
range: 字符串最大长度根据不同类型的名字 ID 长度决定。

Returns ​

GameObject返回第一个查找到的对象,如有多个同名对象,随机返回一个

Precautions

全局查询接口会耗费一定的查询时间,可能会降低游戏的性能。


findGameObjectsByName
​

• Static findGameObjectsByName(name): GameObject[]

通过名字查找物体

Parameters ​

name string物体名字
range: 字符串最大长度根据不同类型的资源 ID 长度决定。

Returns ​

GameObject[]返回所有查找到的对象

Precautions

全局查询接口会耗费一定的查询时间,可能会降低游戏的性能。


findGameObjectsByTag
​

• Static findGameObjectsByTag(tag): GameObject[]

通过自定义标签获取物体

Parameters ​

tag string自定义 tag
range: 字符串最大长度不超过 200 个字

Returns ​

GameObject[]Array<GameObject>

getGameObjectByPath
​

• Static getGameObjectByPath(path): GameObject

通过路径查找物体

Parameters ​

path string物体路径
range: 字符串最大长度根据路径 ID 长度决定。不做限制。

Returns ​

GameObject返回第一个查找到的对象,如有多个同名对象,返回找到的第一个

spawn
​

• Static spawn<T>(assetId, gameObjectInfo?): T

构造一个物体

Parameters ​

assetId string资源 id
range: 根据资源 ID 长度而定
gameObjectInfo? GameObjectInfo构建物体的信息
default: 选填
range: 字符串最大长度根据不同类型的资源 ID 长度决定。

Returns ​

T构造的物体
使用示例: 调用方式
ts
let obj = GameObject.spawn<Model>("197386", {
   replicates: true,
   transform: new Transform()
});
let obj = GameObject.spawn<Model>("197386", {
   replicates: true,
   transform: new Transform()
});

Type parameters ​

Textends GameObject<T>