unity中怎样用代码获取物体组件中的相关属性

unity中怎样用代码获取物体组件中的相关属性,第1张

1private Rigidbody a;

2aisKinematic=false ;

Unity 是基于GNOME桌面环境的用户界面, 由Canonical公司开发,主要用于Ubuntu *** 作系统。

Unity作为Compiz的插件,是使用C++和Vala编程语言实现的,并使用了不常用的Nux的OpenGL工具包。

作为Compiz的一个插件,Unity的GPU加速性能可以广泛支持不同的硬件体系。

Unity3d中GameObject对象可以包括其他子GameObject,并且本身包括多个Component

1.GameObjectFind("myObject") or FindGameObjectByTag will search the scene for an object called myObject

2. transformFind("myObject") will only search the game objects children for an object called myObject

3.GetComponent用来获取组件。

Transform Find(String name)    Transform FindChild(String name)

查找名为name的(transformgameObject)直接子物体并返回该子物体的Transform属性。不能是孙子物体或更低辈分的子物体。

2可以在name中使用字符'\' 遍历整个路径。其中路径的根必须是transformgameObject的直接子物体,不能是孙子物体或更低辈分的子物体。

这样就可以访问到以transformgameObject为根的物体树,包括其子物体,孙子物体,曾孙物体。。。。

若Cube物体有一个直接子物体Cube1,Cube1有一个直接子物体Cube2,我们就可以在Cube的脚本中使用transformFind("Cube1/Cube2");

或transformFindChild("Cube1/Cube2");

这样就直接访问到了transformgameObject的孙子物体Cube2。

这个还是多个材质球

transformGetComponent<MeshRenderer>()materials[0]name

这个还是单个材质球

transformGetComponent<MeshRenderer>()materialname

1、添加组件

gameObjectAddComponent<T>()

2、删除组件

GameObjectDestroy(t)

3、获取组件

gameObjectGetComponent<T>();

上一节,提到UE4的场景,Unity也有同样的功能,这里也记录一下:

这是一个简单的场景,连就一个“Sphere” 和 一个 “cube”,这也是用的最多的场景的样子,这个产经叫“2”,另外又建了一个场景叫“1”,里面是一个“Plan”:

这时候,我的右侧列表里有两个场景:1 和 2,当前打开的是场景 1,这时候拽着 2 不放 拖拽到 场景1 的Hierarchy,面板下,结果是这样的:

可以看到场景1 和 场景 2进行了叠加,并且“Hierarchy”面板下也出现了两个场景,并且是两个目录树,分别对应各自的场景。

这时候,在任何一个场景的标签上右键,会d出下拉列表,里面的一些菜单也很好理解:

Set Active Scene,意思就是把这个场景设置为活动的产经,也就是,一些 *** 作都是对应这个场景的,比如,新建一个Object ,烘焙等等 *** 作,都是对应活动的场景。

新建物体有个地方要注意:如果是在Create 下拉菜单下建立物体,则对应的就是上面说的 Set Active Scene:

但是如果是在每个场景的后面的下拉菜单里建立,那么就是针对对应的场景的,而不是针对Set Active Scene的:

另外还有一点,默认的当前场景是 “活动的场景”,后来加载进来的是 “非活动的场景”

接着说菜单下面的其他选项:

Save Scene、Save Scene as 、Save All,不用说了,一看就明白。

Unload scene,就是不加载产经,如果这时候 不加载 2 场景 ,则只显示1 场景:

可以看到,2 场景的东西都不见了,并且 后面多了一个提示:not loaded。提示没有加载,但是场景2还在列表里。这就是和下面的 remove scene的区别

Remove Scene,就是把 场景彻底给移除掉。(包括列表里)

当对场景的物体进行修改后,比如移动位置 等等,那么这时候,无论是 “不加载”还是“移除”都会提示,要不要保存:

并且之前的 灰色状态的“Discard changes”这时候变成了可点击状态,意思就是撤回已经做的改变。

Select Scene Asset,就是找到在工程目录里的位置,这点和UE4的也是一毛一样。

Add New Scene,更好理解,添加一个新的场景:

默认的添加的场景叫“未命名”当你 在它上面 右键保存的时候,会d出对话框,让你取名字的。

最后一个“Gameobject”,上面也体提到过,就是建立一些游戏对象到这个 场景里。

通过上面的一些探索可以发现,这和上一节的UE4的场景 *** 作,其实是一样的,个人感觉还是Unity的更直白,无论是菜单的名字,还是 *** 作,都比UE4要更加通俗易懂。(这就像有些人,明明可以说的很直白,非要用一些专业术语,或高大上的饿词,显示自己很牛逼的样子)

对了,最后说一句,UE4 尝尽的物体叫“Actor”(非得让人看不懂才显得自己牛逼),和Unity的 “Gameobject”是一个意思(哎,要在两个引擎之间来回切换 适应 也是蛮累的)

GameObjectFindWithTag效率较高,但是必须提前设置对象的Tag。

GameObjectFind如果是针对整个场景来查找,效率是很低的,尽量采用精确的路径参数如hand = GameObjectFind(/Monster/Arm/Hand);

同时它们都最好不要用在Update () 等不间断运行的方法中,特别是GameObjectFind,否则会照成性能降低。

以上就是关于unity中怎样用代码获取物体组件中的相关属性全部的内容,包括:unity中怎样用代码获取物体组件中的相关属性、unity3d 如何获取一个子对象,如何获得并更改在一个模型里面的子对象的属性的值。、unity怎么获取一个物体上材质球的名字有多个材质球,怎么用C#脚本判断这个物体上的材质球是哪个等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/9654306.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-30
下一篇 2023-04-30

发表评论

登录后才能评论

评论列表(0条)

保存