工作区
- 类型:WorkSpace
服务对象
此对象为服务对象,可以使用GetService()
函数获取此服务。
不可创建
无法使用RWObject:New()
创建此对象,也不在编辑器对象列表中显示。
简介
工作区是一个其中的对象会被可视化显示到3D场景中的服务,并且只有在工作区中的对象才会发生物理交互。
工作区是系统自带的一个重要服务,在游戏开始运行时就会自动加载,用于储存3D场景中的对象。比如储存于工作区下的基础零件
会在游戏界面中可视化显示为3D实体,并且与游戏中的其他零件产生物理交互。
保存模板
对于一些暂时不用在游戏场景中显示,又不想删除的对象,可以从工作区中移至通用存储
或者服务器存储
中,等待需要再次使用的时候再拖至工作区或者通过脚本直接从通用存储
和服务器存储
中复制到工作区下。对于需要在游戏场景中重复多次使用的对象,可以根据上述的方法,在通用存储
和服务器存储
中保存对象模板,以方便后续的修改和使用。
工作区特有属性
工作区服务包含一个专属的属性CurCamera
,该属性用于存储当前摄像机
对象。可以通过脚本访问该属性来获取当前摄像机
对象或者重新设置当前摄像机
。
工作区特有函数
工作区服务下有一些特有的检测零件以及射线检测的函数。比如FindPartsInZone()
用于检测指定区域内的零件;RaycastHit()
函数根据给定射线检测碰触到的对象。
注意事项
作为服务,工作区在通过脚本调用时推荐使用GetService()
函数进行调用。
local workSpace=GetService("WorkSpace") --获取工作区服务对象
属性
CurCamera 当前摄像机 RWObject [只读]
当前生效的摄像机
继承自RWObject:
Name 名称 string
该对象的自定义名称
ClassName 类型 string
该对象对应的对象类型名称
Parent 父级 RWObject
该对象的父级对象
函数
FindObjOnRay(ray,ignoreInstance,Distance,Num)
发出一条射线,当与指定对象接触后,返回接触的对象、接触点坐标、接触面的曲面法线
FindObjOnRayWithIgnoreList(ray,ignoreTable,Distance,Num)
FindObjOnRay的变体,忽略输入表格中的对象
FindObjOnRayWithWhiteList(ray,whiteTable,Distance,Num)
FindObjOnRay的变体,只检查输入表格中的对象
FindPartsInZone(minPoint,maxPoint,ignoreInstance,maxParts )
返回一个数组,数组内容为在指定区域内所有零件类对象(包括出生点)。
FindPartsInZoneWithIgnoreList(minPoint,maxPoint,ignoreTable,maxParts)
FindPartsInZone的变体,忽略输入表格中的对象
FindPartsInZoneWithWhiteList(minPoint,maxPoint,whiteTable,maxParts)
FindPartsInZone的变体,只检查输入表格的对象
IsZoneEmpty(minPoint,maxPoint, ignoreInstance)
通过minPoint和maxPoint构成一个区域,查询该区域内是否没有零件类对象,返回结果为一个布尔值,True为区域内不存在对象,False为存在对象
IsZoneEmptyWithIgnoreList(minPoint,maxPoint, ignoreTable)
IsZoneEmpty的变体,忽略输入表格中的对象
RaycastHit(origin,direction,maxDistance)
根据给定的起始点和方向构造一条射线,并且返回命中的对象、对象名称、命中点以及距离
RaycastBool(origin,direction,maxDistance)
根据给定的起始点和方向构造一条射线,返回一个bool值,用以说明射线是否与对象发生碰撞
GetGravity()
获取当前游戏世界的重力
继承自RWObject:
DelAllChild()
删除所有子对象
Available()
检查对象是否可用
Clone(parent)
复制自身,若有参数则以参数为父级
Destroy()
删除自身
GetAncestorByName(Name)
通过对象名字寻找父级对象
GetAncestorByClassName(className)
通过对象类型寻找父级对象
GetChildByName(Name,recursive)
通过对象名字寻找子级对象
GetChildByClassName(className,recursive)
通过对象类型寻找子级对象
GetAllChild()
寻找自身所有子级对象,并作为一个列表返回
GetAllDescendant()
递归寻找自身所有后代,并作为一个列表返回
IsAncestor(TarObj)
判断自身是否为目标对象的祖先
IsDescendant(TarObj)
判断自身是否为目标对象的后代
WaitForChild(childName,timeout)
寻找自身的子对象。如果没有子对象,在没有填写timeout参数时,会暂停进程直到找到子对象;如果填写了timeout参数,会根据参数时间暂停进程,超出参数时间后,进程照常进行
Child(childName)
根据给定的名字寻找自身的子对象
Equals(TarObj)
判断自身是否为目标对象,结果为真返回True,结果为假返回False;注意克隆、新建同类型、同名对象,equal结果均为假
IsClass(className)
判断自身是否为给定的对象类型
事件
继承自RWObject:
Destroyed()
删除自身时触发
ChildAdded(childobject)
添加子对象时触发
ChildRemoved(childobject)
移除子对象时触发
DescendantAdded(descendantobject)
添加后代时触发
DescendantRemoved(descendantobject)
移除后代时触发
AncestryChanged(AncestryChanged)
祖先变更时触发