Unity常用组件参数详解

Unity常用组件参数详解,第1张

1Audio Source(声音组件)

AudioClip:声音片段,可对其直接赋值声音文件

Output:音源输出

Mute:是否静音

Bypass Effects:音源滤波开关,是否打开音频特效

Bypass Listener Effe:监听滤波开关

Bypass Reverb Zone:回音混淆开关,当勾选时,不执行回音混淆

Play On Awake:开机自动播放

Loop:循环播放

Priority:播放优先级

Volume:音量大小,范围0到1。

Pitch:播放速度,范围-3到3。

Stereo Pan:声道占比

Spatial Blend:空间混合

Reverb Zone Mix:回音混合

3D Soungd Settings:略

2Rigidbody(刚体组件)

Mass:质量。数值越大物体下落越快

Drag:阻力,数值越大物体反向加速度越大

Angular Drag:角阻力,数值越大自身旋转的速度减慢的越快

Use Gravity:是否使用重力

Is Kenematic:是否受物理的影响

Interpolate:设置图像差值

                    默认为none,由于图形更新比物理更新要快,可能会导致物体跳跃式前进。

                    Interpolate模式:物体会根据上一帧物体的位置进行平滑运动。

                    Extrapolate模式:物体会根据下一帧物体的位置进行平滑运动

Collision Detection:碰撞检测

                   对于高速运动的物体来说,当Collision Detection为默认的Discrete时,有可能存在一种情况:前一帧时,物体在碰撞器的一边,下一帧时,物体也已经穿越了碰撞器达到了另一边,以致于检测不到碰撞。这时,我们就需要连续碰撞检测。

                       Discrete:非连续型检测模式(默认)

                  Continuous:连续检测。

                                        更加精细的碰撞检测,但是很耗资源;在这种状态下,当这个刚体与其他普通刚体碰撞时,仍将使用Discrete的碰撞检测,但是与没有刚体的Mesh Collider碰撞时就会连续检测了。

   Continuous Dynamic:连续动态检测。

                                         对没有刚体的Mesh Collider或是对处在Continuous或是Continuous     Dynamic状态下的刚体使用连续碰撞检测,对其他的刚体使用普通的Discrete检测。

               Continuous和Continuous Dynamic的区别在于对Continuous使用何种检 测  ,Continuous使用Discrete,而Continuous Dynamic使用Continuous。 但它们对物理性能都有很大影响。

               刚体和刚体之间的连续碰撞检测,刚体的碰撞器必须是Box,Sphere,Capusle

               刚体和非刚体(静态碰撞器)之间的连续碰撞检测,刚体的碰撞器必须是                                                 Box,Sphere,Capusle,非刚体的碰撞器必须是Mesh

Constraints:冻结,停止某个轴向感应物理引擎的效果

 Freeze Position:冻结x轴方向,y轴方向,z轴方向

Freeze Rotation:冻结x轴旋转,y轴旋转,z轴旋转

3Mesh Collider(网格碰撞体)

Convex:凸起,勾选后,与其它基本碰撞体发生碰撞

    Inflate Mesh:网格膨胀,它有效地扩展了源数据的边缘宽度和斜切锋利的边缘,使所

                            得网格适合物理更好,将此设置为true可以降低碰撞网格的精度

        Skin Width:皮肤厚度,一个合理的设定是使该值等于半径(Radius)的10%

    Is Trigger:触发器

Material:材质,引用何种物理材质决定了和其他对象如何作用

Mesh:网格,获取对象的网格并将其作为碰撞体

4Capsule Collider(胶囊碰撞体)

Edit Collider:点击之后可编辑碰撞范围

Is Trigger:触发器

Material:材质

Center:碰撞体在对象局部坐标空间中的位置

Radius:碰撞体局部坐标宽度的半径

Height:碰撞体的总高度

Direction:对象局部坐标空间中胶囊纵向方向的轴

5Camera(摄像机)

Clear Flags:背景显示内容。默认是天空盒子

                Solid Color:纯色,选择此选项显示background颜色

                 Depth Only:仅深度,用于游戏对象不希望被裁减的情况

                  Don't Clear:不清除,不清除任何颜色或深度缓存,其结果是,每一帧渲染的结果叠加在下一帧之上

Background:背景显示颜色。没有天空盒子将显示这个颜色。

Culling Mask:用于选择是否显示某些层,默认是Everything

Projection:摄像机的类型(投射方式)。

      Perspective:透视,摄像机将用透视的方式来渲染游戏对象

                 Field Of View:视野范围,用于控制摄像机的视角宽度以及纵向的角度尺寸

          Orthographic:正交,摄像机将用无透视的方式来渲染游戏对象

                   Size:大小,用于控制正交模式摄像机的视口大小

Clipping Planes:剪裁平面。摄像机的渲染范围,Near为最近的点,Far为最远的点

Viewport Rect:视图矩形。用四个数值来控制摄像机的视图绘制在屏幕的位置和大小,使用的是                         屏幕坐标系,数值在0~1之间。坐标系原点在左下角。

Depth:深度。用于控制摄像机的渲染顺序,较大值的摄像机将被渲染在较小值的摄像机之上

Rendering Path:渲染路径。用于指定摄像机的渲染方法。

              Use Graphics Settings:选择图形设置中的方法

              Forward:快速渲染,传统的渲染路径,它支持每个像素的光照及平行光(directional light)的实时阴影

               Deferred:延迟渲染,会准确如实地渲染光照和阴影。如果有许多实时光照,最适合它,需要一定程度的硬件支持,不支持移动设备

              Legacy Vertex Lit:顶点光照,摄像机将对所有的游戏对象座位顶点光照对象来渲染

               Legacy Deferred(light prepass):具有最低照明保真度和不支持实时阴影的渲染路径。它是前向渲染路径的子集。

在使用正投影时不支持延迟渲染。如果相机的投影模式被设置为正交,则这些值被重写,并且相机将总是使用快速渲染。

Target Texture:目标纹理,用于将摄像机视图输出并渲染到屏幕。

Occlusion Culling:遮挡剔除

HDR:高动态光照渲染,用于启用摄像机的高动态范围渲染功能,因为人眼对的范围的光照强度更为敏感,所有用高动态范围渲染能让场景变得更为真实,光照的变化不会显得太突兀。

Target Display:目标显示

6Directional light(平行光源)

Type:光源类型,可选择不同光源

Baking:用于烘焙模式的,在Lighting面板下点击Bake进行烘焙光照贴图时,生成对应的反射贴图

Color:光照的颜色

Intensity:光照强度

Bounce Intensity:放射光的光照强度

Shadow Type:光源投射的阴影类型

Cookie:一个遮罩,使光线在不同的地方有不同的亮度。如果灯光是聚光灯或方向光,这必须是一个2D纹理。如果灯光是一个点光源,它必须是一个立方图(Cubemap)

Cookie Size:缩放Cookie投影。只用于方向光。

Draw Halo:是否在点光源中使用白雾效果

Flare:设置光源粒子效果

Render Mode:光源渲染模式

Culling Mask:通过层可设置某些地图层不受光照影响

7Point light(点光源)

8Spotlight(手电筒)

描述的语言看不明白。

我只能猜

脚本A

挂载在对象

objA

A

里定义了public

对象

a

脚本B

挂载在对象

objB

B

里定义了public

对象b

A

访问

B

的对象b:

GameObjectFind("objB")GetComponent<B>()b

B

访问

A

的对象a:GameObjectFind("objA")GetComponent<A>()a

Unity是 实时3D互动内容创作和运营平台 。

包括游戏开发、美术、建筑、汽车设计、影视在内的所有创作者,借助 Unity 将创意变成现实。

Unity 平台提供一整套完善的软件解决方案,可用于创作、运营和变现任何实时互动的2D和3D内容,支持平台包括手机、平板电脑、PC、游戏主机、增强现实和虚拟现实设备。

也可以简单把 Unity 理解为一个游戏引擎,可以用来专业制作游戏!

Unity小知识点学习

获取某个游戏对象下的所有子物体

在Unity中有时候我们会有这样的需求,拿到某个对象下的所有子对象然后统一做一些事情

我们可以通过GetChild的方式拿到这个物体的子对象,但是挨个拿会很麻烦

所以这里说一个可以拿到所有子对象的方法:GetComponentsInChildren

用法示例:

Unity3D 灵巧小知识点 ☀️ | 获取某个游戏对象下的所有子物体_其他

将脚本挂在到场景中,并赋值某个游戏对象

public GameObject @object;

Transform[] transforms;

void Start()

{

//游戏对象下的子物体激活的没激活的都会被拿到,包括游戏对象本身

//transforms =@objectGetComponentsInChildren<Transform>(true);

//游戏对象下的子物体激活的会被拿到,包括游戏对象本身;没激活的不会被拿到

transforms = @object GetComponentsInChildren<Transform>(false);

//遍历

foreach (Transform t in transforms)

{

//打印拿到的子对象

DebugLog("t的值为:"+t);

}

}

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

打印结果如下:

Unity3D 灵巧小知识点 ☀️ | 获取某个游戏对象下的所有子物体_非激活_02

可以通过代码控制是否要拿到非激活的子对象,这样就可以通过一个方法拿到所有子对象了!

这里顺便说一下几个常用的方法

获取某个对象子物体数量的方法

a = @objecttransformchildCount;

DebugLog("子物体的数量为:" + a);

1

2

打印结果:

Unity3D 灵巧小知识点 ☀️ | 获取某个游戏对象下的所有子物体_非激活_03

获取当前对象的索引值(当前对象为第几个子类,从0开始)

int child = transformGetSiblingIndex();

1

Unity3D 灵巧小知识点 ☀️ | 获取某个游戏对象下的所有子物体_3d_04

你这里的c#程序指的是工具类还是脚本? 如果是工具类,那么直接实例化它就好了 如果是其他游戏对象上的脚本,需要先获取该游戏对象(可以用GameObjectfind()方法来获取游戏对象) 然后使用getcomponent()泛型方法来获取脚本。

GameObject是unity所有实体的基类

常用的函数

1GameObjectFind(“Cube”);

可以查找并获取一个指定的name为Cube的对象。然后进行其他 *** 作。

2GameObjectFindWithTag(“_cube");

和Find函数相似,不同之处在于该方法是通过标签(tag)值查找

3GameObjectSetActive(true);

激活/停用此游戏对象(如下图11所示打钩(true)的时候该游戏对象就属于激活状态,去掉打钩(false)就属于停用状态即游戏对象也就不会显示在你的视野内)

4GameObjectGetComponent

获取组件:如果这个游戏对象附件了一个type名称类型的组件,则返回该组件,否则为空。

hinge=gameObjectGetComponent("HingeJoint")asHingeJoint;

hingeuseSpring=false;

是一个每个对象都用的组件,用于储存并 *** 控物体的位置、旋转和缩放。(每一个Transform可以有一个父级,允许你分层次应用位置、旋转和缩放。可以在Hierarchy面板查看层次关系。他们也支持计数器(enumerator),因此你可以使用循环遍历子对象。)

1transformFind

是通过名字查找到子对象并返回他。

2TransformTranslate  平移

向莫一个方向进行移动多少的距离

移动变换由x沿着x轴,y沿着y轴,z沿着z轴

transformTranslate(0,0, TimedeltaTime);

transformTranslate(0, TimedeltaTime,0, SpaceWorld);

3Transformparent

通过该方法可以找到父对象,然后可以进行对父对象 *** 作(如改变父对象名字)

_childgameObjecttransformparentgameObjectname = "ParentBox";

4Transformroot

返回最根部父类进行 *** 作

string name=_childgameObjecttransformrootgameObjectname;

DebugLog(name);

5Transformposition

在世界坐标系中transform的·位置

6Transformrotation

Unity以四元数储存旋转角度。要旋转一个对象使用TransformRotate,使用TransformeulerAngles以欧拉角设置旋转角度。

7TransformlocalScale

相对于父级对象进行缩放(局部缩放)

transformlocalScale = new Vector3(05f,05f, 05f);

(为=时是对该物体进行缩小到后面参数的大小,+=时是对该物体进行放大)

8Transformforward

向前在世界空间坐标,变换的蓝色轴。也就是z轴。

在世界空间坐标,变换的蓝色轴。也就是z轴。

在 Unity 中目前我发现了获取依赖关系的两个 API 接口,分别是:

EditorUtilityCollectDependencies

AssetDatabaseGetDependencies

其中 AssetDatabaseGetDependencies 获取到的结果就是上面演示的那样,是大粒度的依赖关系。而 EditorUtilityCollectDependencies 获取到的是小粒度的依赖关系,所依赖的组件和 Shader 等都会列出来,非常的仔细。

C#

#if UNITY_EDITOR

using UnityEngine;

using SystemCollections;

using UnityEditor;

namespace PTFind

{

[ExecuteInEditMode]

public static class Find

{

[MenuItem("Find/What objects in scene use this", false, 20)]

public static void SelectSceneUsesOfAsset()

{

Object selectedObject = SelectionactiveObject;

if (selectedObject == null)

{

return;

}

Object[] roots = new Object[]{ selectedObject };

var objs = EditorUtilityCollectDependencies(roots);

string path = AssetDatabaseGetAssetPath(selectedObject);

var objs2 = AssetDatabaseGetDependencies(path);

foreach (var obj in objs)

{

DebugLog(objGetType()Name);

}

}

}

}

#endif

#if UNITY_EDITOR

using UnityEngine;

using SystemCollections;

using UnityEditor;

namespace PTFind

{

[ExecuteInEditMode]

public static class Find

{

[MenuItem("Find/What objects in scene use this", false, 20)]

public static void SelectSceneUsesOfAsset()

{

Object selectedObject = SelectionactiveObject;

if (selectedObject == null)

{

return;

}

Object[] roots = new Object[]{ selectedObject };

var objs = EditorUtilityCollectDependencies(roots);

string path = AssetDatabaseGetAssetPath(selectedObject);

var objs2 = AssetDatabaseGetDependencies(path);

foreach (var objin objs)

{

DebugLog(objGetType()Name);

}

}

}

}

#endif

不得不说,Unity Editor 提供的默认的依赖查找的功能好弱,包括反向依赖关系,引用关系丢失等功能。或许我们可以利用这些接口自己做一个好用点的依赖关系查找插件。

以上就是关于Unity常用组件参数详解全部的内容,包括:Unity常用组件参数详解、unity 定义的一个成员函数中怎么访问这个类所定义的对象、unity怎么用代码获得当前激活的子类等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

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

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

发表评论

登录后才能评论

评论列表(0条)

保存