
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。
u3d中的GameObject对象有acive判断其是否为显示状态。
一般来说将场景至于一个空物体下作为根节点,然后通过根节点的transformFind
来查询物体,然后通过acive属性即可得到物体是否隐藏。
AdvancedSkeleton(俗称ADV)是大家在Maya中使用得非常多的一个绑定+动画插件,功能强大,简单易学。我们可以使用ADV来绑定角色,key出动画,然后输出成FBX供游戏引擎(比如Unity)来使用。
不过,由于ADV的开发初衷并非针对游戏,所以默认的骨骼设计比较繁琐,与Unity的Humanoid角色设定并不能完美通用。
比如,我们选择DeformationSystem节点(这是ADV放蒙皮骨骼的地方)和Geometry节点(通常将模型放在这里)然后导出的FBX,如果在Unity中以 Rig: Animation Type = Humanoid 的设定导入的话,骨骼的识别匹配是有问题的,通常会表现为明明Maya中脚步没有滑动,但导入Unity以后脚步就出现明显的滑动现象。
这是因为ADV的Deformation Rig的骨骼数量远远超过Humanoild的骨骼数量,转换后必然会丢掉很多骨骼的动画,这样累积起来就会造成动画的明显偏差。
解决的办法有两个:
一个办法是不使用Unity的Humanoid系统,将 Rig: Animation Type 设为 Generic ,这样能够完美保留动画的全部细节,但缺陷也很明显,设为 Generic 之后基本上就只能用自己调的动画了,不能直接套用海量的Unity动作资源库。对于我这种用习惯了资源库的懒人来说简直是不可忍受的。
另一个办法是利用ADV的“游戏骨骼(Game Skeleton)”功能,这个功能可以自动建立一套符合Unreal规范的标准骨骼系统,甚至还可以将原本DeformationSystem的蒙皮转移到这套新骨骼上去。Unreal标准骨骼系统和Unity的Humanoid是完美匹配的,这样我们就可以很愉快的在Unity中利用Humanoid系统同时使用自己制作的动画以及海量动作资源库的素材了。
具体 *** 作步骤如下:
导出带骨骼蒙皮的模型:
首先在Rig文件中点击 Game Skeleton -> Create ,场景中会创建一套以 root 节点开头的骨骼,这套骨骼是完美匹配我们的Rig的,大家在配图中看到多出来的骨骼是原本Rig中就没有的手指结构(是的,原本的Rig中就没有做5根手指,所以这个Game Skeleton就匹配不了),这些多余的结构是可以直接删除的。
然后,点击 Transfer Skinning ,ADV会将蒙皮权重转移给新的游戏骨骼系统。大家要注意Maya底端的提示,如果看到 // Skinning transferred to Unreal Skeleton 字样就说明转换成功了。如果再次点击 Transfer Skinning ,ADV会将蒙皮权重转回给原来的DeformationSystem。
转移权重成功后,就可以选择这个新的 root 节点和原来的 Geometry 节点,导出成FBX,这就是我们的可以在Unity中使用的带骨骼蒙皮的角色资产了。通常我会在Unity的FBX导入设置中设置无动画、无材质、Humanoid类型Rig。
导出动画:
动画的导出更为简单。首先还是点击 Game Skeleton -> Create 来创建Game Skeleton。我个人建议先将模型复原成绑定姿态再创建Game Skeleton,可以到实际动画曲线之外的帧,点击ADV最底下的 Go To Build Pose 按钮。
然后直接选择 root 节点,导出成FBX,这就是纯骨骼动画资产。要注意: root 以及其下的骨骼都是受驱动控制的,并没有关键帧和动画曲线,在导出FBX的设置中不仅需要勾选 动画 ,还需要勾选 烘焙动画 并设置烘焙范围。
动画FBX在Unity中的设置也是无材质+Humanoid Type,不过Rig中的Avatar我会拷贝前面Rig模型所创建的Avatar,不喜欢工程中多出一堆无用的Avatar来。
Animation那里需要修改下动画片段名称,并设置动画片段范围。希望动画片段循环播放的可以勾选 Loop Time 选项。
默认的Animation导入设置会将动画曲线做一些优化,通常情况下就都让它优化吧,但如果发现优化后的动画出现了明显的问题,可以将 Anim Compression 设置为 Off 。
最后不要忘记了点击 Apply 按钮确认修改。
白模是转成Game Skeleton后导出的Humanoid Type,有贴图的是原始动画导出的Generic Type,两者基本看不出差异来。
昨天中国AR网 (>
今天我们继续教程的分享《Unity教程:Unity地形编辑器》
地形:
地形创建:创建地形 :GameObject->3D Object->Terrain
编辑地形:
地形资源导入方法:
点击鼠标右键,然后依次点击: Import Package -> Terrain Assets->Import
地形细节设置:
为地形放置树木
创建风力区域:
GameObject ->3D Object->Wind Zone
为地形放置花草
为地形添加细节模型:
第三方插件:花草与模型地形编辑相关设置:设置地形长、宽、最高海拔、分辨率以及最大树木放置量。
地形编辑相关设置:提高海平面添加水体,天空盒,太阳光等资源导入:水体、天空盒、太阳光和角色控制器在Project 窗口中,鼠标右键选择 Import Package,如右图所示, 导入内置的资源包。树木创建器(Tree Creator)树木创建器面板在菜单中的GameObject->3D Object->Tree, 创建一棵树。在场景中选择Tree,在Inspector窗口中显示出Tree Creator 面板
。一般树木的制作步骤:1:> 基本树干形状建立:选择根建立分枝干设置分支干Distribution 为 Whorled。 设置 Frequency 为 30。2:> 提高主枝干开始长出分枝干的高度:选择分枝干节点,打开Distribution 属性的曲线编辑器,设置曲线。3:> 使得分枝干向上生长:选择分枝干节点,调节Growth Angle 的值为06一般树木的制作步骤(续)4:> 添加“子枝干”选择分枝干 (再)添加分枝干 选择长度变短。5:> 为枝杈添加树叶。6:> 修改树叶大小。7:> 添加树皮材质。分别选择主树干、分树干、子树干的属性 Branch Material 添加准备好的材质。8:> 添加树叶材质。树木创建器树木创建器-面板
教程由中国AR网资源教程(>
以上就是关于unity3d 如何获取一个子对象全部的内容,包括:unity3d 如何获取一个子对象、U3D 有什么方法可以判断物体是否隐藏、使用AdvancedSkeleton给Unity制作动画的一些经验技巧等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)