Unity 实用的方法

摘要:
1Destroy;这段代码实现的效果就是经过2.5秒后销毁游戏对象。1if2{34}相比使用Vector3.Distance方法获取两点之间距离,然后与给定的距离值进行比较,sqrMagnitude方法省去了Vector3.Distance方法求平方根的操作,所以在执行速度上比Vector3.Distance方法快。1if2{34}从性能上考虑,使用双等号进行判断比使用CompareTag方法更耗费性能。1if2{34}八、高亮显示Debug.Log对应的游戏对象当使用Debug.Log方法输出信息时,可将gameObject作为此方法的第二个参数。

一、延迟销毁游戏对象

默认情况下,使用Destroy() 方法会立即销毁游戏对象,如果想延迟一段时间再销毁,可以在这个方法中传递一个时间参数。

1    Destroy(gameObject, 2.5f);

这段代码实现的效果就是经过 2.5 秒后销毁游戏对象。

二、获取一个随机布尔值

我们知道 Random.value 能够返回 0~1 之间的随机数,所以让此随机数与 0.5f 进行比较,就能够获取一个随机的布尔值 True 或者False

1    bool true_Or_Flase = (Random.value > 0.5f);

三、协程嵌套

在一个协程里面开启另外一个协程,可以使用以下方法:

1     voidStart()
2 {
3 StartCoroutine(FirstCorout());
4 }
5 
6 IEnumerator FirstCorout()
7 {
8         yield returnStartCoroutine(SecondCorout());
9 }
10 
11 IEnumerator SecondCorout()
12 {
13         yield return 0;
14     }

四、快速比较距离

将两点之间的距离与一个固定距离进行比较时,可使两点相减然后取平方(即 sqrMagnitude ),然后用该值与某个距离值的平方进行比较。

1    if((pointA-pointB).sqrMagnitude < dist *dist)
2 {
3 
4    }

相比使用Vector3.Distance 方法获取两点之间距离,然后与给定的距离值进行比较,sqrMagnitude 方法省去了Vector3.Distance 方法求平方根的操作,所以在执行速度上比Vector3.Distance 方法快。

1    if (Vector3.Distance(pointA, pointB) <dist)
2 {
3 
4    }

五、在Inspector面板中显示私有变量

将私有变量标记为 SerializeField,可在Inspector 面板中进行显示。

Unity 实用的方法第1张

六、在Inspector面板中隐藏公有变量

如果不希望在Inspector 面板中显示公有变量,可将其标记为[HideInInspector]

Unity 实用的方法第2张

七、CompareTag方法

当对游戏对象的 Tag 进行比对的时候,可使用CompareTag 方法。

1    if (gameObject.CompareTag("Player"))
2 {
3 
4    }

从性能上考虑,使用双等号进行判断比使用 CompareTag 方法更耗费性能。

1    if (gameObject.tag == "Player")
2 {
3 
4    }

八、高亮显示Debug.Log对应的游戏对象

当使用 Debug.Log 方法输出信息时,可将gameObject 作为此方法的第二个参数。

1     voidStart()
2 {
3         Debug.Log("This is a test", gameObject);
4     }

当程序运行时,点击 Console 面板中对应的输出信息,就可以在 Hierarchy 面板中高亮显示挂载了此脚本的游戏对象。

Unity 实用的方法第3张

九、WaitForSecondsRealtime

当时间缩放为 0 时(即 Time.timeScale=0f ),waitForSeconds 方法将不会停止等待,后续代码也不会执行,此时可使用 WaitForSecondsRealtime 方法。

1   Time.timeScale =0f;
2   yield return new WaitForSecondsRealtime(1f);

十、方便使用的属性

为变量添加一些属性可使它们在Inspector 面板中更容易被使用。

在变量前添加 Range 属性可将其限定在某个范围内使用滑块进行调节。

1 [Range(0f, 10f)]
2     public float speed = 1f;

执行效果:

Unity 实用的方法第4张

两个变量声明之间加入[Space] 可在 Inspector 中添加一个空行;添加Header 可在Inspector 面板中加入一段文字。

1     [Header("Player Settings")]
2     public float speed =1f;
3     public float hp = 100;

执行效果:

Unity 实用的方法第5张

在变量前加入 Tooltip,当鼠标悬停在 Inspector 面板中的变量上时,可显示关于此变量的说明。

1     [Tooltip("移动速度")]
2     public float speed = 1f;

执行效果:

Unity 实用的方法第6张

***| 以上内容仅为学习参考、学习笔记使用 |***

免责声明:文章转载自《Unity 实用的方法》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇使用sql创建表并添加注释利用MAC OS X 自带的磁盘工具提取光盘镜像ISO文件下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Unity自定义Button组件Transition

Unity自带的Button组件有三种不同的Transition(过渡)选项,分别是None,ColorTint,SpriteSwap, Animation。现在想自定义其他功能,比如在不同的状态下,按钮上的文字不同。 首先想到的是直接写一个脚本挂在Button上,实现UnityEngine.EventSystems中定义的IPointerEnterHan...

Unity3D如何获取对象和子对象

在Unity3d中获取游戏对象有三种方法: 一:获取对象 1.通过对象名称获取:objCube=GameObject.Find("Cube");  private var objCube:GameObject;private var isCubeRoate=false; function Start () {  objCube=GameObject.F...

Unity3D研究之支持中文与本地文件的读取写入(转)

前几天有个朋友问我为什么在IOS平台中可以正常的读写文件可是在Android平台中就无法正常的读写。当时因为在上班所以我没时间来帮他解决,晚上回家后我就拿起安卓手机真机调试很快就定位问题所在,原来是他文件的路径写错了。开发中往往一道很难的问题解开的时候发现原来真的非常的简单,哇咔咔。 刚好在MOMO的书中也有涉及到文件的读取与写入,那么本节我将书中的部分...

Unity 全面理解加载和内存管理

最近一直在和这些内容纠缠,把心得和大家共享一下:Unity里有两种动态加载机制:一是Resources.Load,一是通过AssetBundle,其实两者本质上我理解没有什么区别。Resources.Load就是从一个缺省打进程序包里的AssetBundle里加载资源,而一般AssetBundle文件需要你自己创建,运行时动态加载,可以指定路径和来源的。其...

【Unity3D入门教程】Unity着色器基本使用方法

前言 “Shader即着色器,是一款运行在GPU上的程序,用来对三维物体进行着色处理、光与影的计算、纹理颜色的呈现等,从而将游戏引擎中的一个个作为抽象的几何数据存在的模型、场景和特效,以和真实世界类似的光与影的形式呈现于玩家的眼中。”这段话出自郭浩瑜老师所著《Unity3D ShaderLab开发实战详解(第2版)》。可见着色器是服务于显示阶段的,因此要想...

Unity进阶之ET网络游戏开发框架 02-ET的客户端启动流程分析

版权申明: 本文原创首发于以下网站: 博客园『优梦创客』的空间:https://www.cnblogs.com/raymondking123 优梦创客的官方博客:https://91make.top 优梦创客的游戏讲堂:https://91make.ke.qq.com 『优梦创客』的微信公众号:umaketop 您可以自由转载,但必须加入完整的版权声明...