自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

UnityAsk

Unity 开发 教程 技巧

  • 博客(29)
  • 收藏
  • 关注

原创 Unity3D UGUI按钮长按事件

UGUI 对按钮提供了 onClick事件侦听,但是没有长按事件。网上看了些教程,大都是通过在Update里面计时来实现。下面通过Invoke来实现。这样不需要每帧都引入Update计算。Invoke 在一个固定的时间之后调用一个函数。我们将这个时间设置为 holdTime = 1f;单位为秒。当按键松开或者从按钮上移开时,调用CancelInvoke() 取消延时调用。using Uni...

2019-08-17 21:43:33 2149

原创 Unity3D 在Preview 中打印日志

Preview窗口除了可以预览模型之外,我们还可以做别的操作。今天我们来写个小工具在Preview窗口中显示调试信息。可以看下面的图,同样是打印 health 和 power 的日志,在 Preview 中显示比在 Console 中显示舒服多了。左边是Console中显示,右边是Preview窗口中显示。创建Editor目录,然后把下面的脚本放进去using UnityEngine;...

2019-08-15 22:45:52 502

原创 Unity3D 查找Inspector上丢失脚本的物体

有时因为各种原因,某些物体的Inspector上显示脚本丢失。如下图:通过下面的脚本,我们可以找出场景中哪些物体丢失了脚本。using UnityEngine;using UnityEditor;using System.Collections.Generic;using UnityEngine.SceneManagement; public class SelectGameOb...

2019-08-15 22:45:10 2299 1

原创 Unity3D 在 Inspector 中预览场景

在Project窗口中点击模型,可以在Preview窗口中进行预览(见下图),但是场景却不能预览。当项目中有比较多的场景,而场景中内容多的时候,我们需要双击每一个打开它才能查看内容,比较耗时。今天我们来实现一下类似3D物体预览的 场景预览。当单击场景的时候,可以直接快速的在Inspector中显示他们的内容。效果如下:创建一个ScenePreview.cs文件,将下面代码复制进去。完整...

2019-08-13 22:43:12 3173

原创 Unity3D 常用贴图加载方式

Unity3D加载贴图几种常用的方式第一种 通过WWW异步加载通过WWW 加载完成后 ,用www.texture获得贴图,然后 通过Sprite.Create()创建Sprite,赋给相应的Image显示。 private IEnumerator LoadImageWithWWW(string imageName,Action<int,Sprite> callBack) ...

2019-08-11 22:23:08 3269

原创 Unity3D 拖拽力量指示条

游戏中,有时需要一个指示条来标明拖拽的力度。比如愤怒的小鸟 拖弹弓的力度,或者高尔夫游戏里挥杆的力度等等。今天我们使用LineRenderer来实现下上面效果图中的效果。首先在Update中侦听鼠标按下,移动,和松开三个时间 if (Input.GetMouseButtonDown(0)) { } if (Input....

2019-08-11 22:05:36 986 3

原创 Unity3D 未挂载脚本自动初始化

通过RuntimeInitializeOnLoadMethodAttribute属性,可以在游戏启动时自动执行没有挂载到GameObject上的脚本。这样在做一些插件的时候会比较方便,不需要用户手动去添加脚本,只要启动游戏就能直接自动执行。// Create a non-MonoBehaviour class which displays// messages when a game is ...

2019-08-08 21:34:52 2510

原创 Unity3D 无限循环视差背景

今天我们来实现下 游戏中常用的循环视差背景效果,效果如上图。首先准备5张背景图,用来做远中近景。将背景图片的属性设置为Sprite为了能无缝循环 ,将5背景图片拖入到场景中。然后复制两份出来,一份设置x坐标为-20,一份设置x坐标为20,一份设置x坐标设置为0。将同一层的三张图打组,并将脚本挂到组上。并以此设置Sprite的“Order in Layer” 值,越远的设置的值为越小。...

2019-08-08 21:32:37 3027

原创 Unity3D 本地数据持久化记录存储

下面介绍几种 Unity本地记录存储的实现方式。第一种 Unity自身提供的 PlayerPrefs//保存数据PlayerPrefs.SetString("Name",mName);PlayerPrefs.SetInt("Age",mAge);PlayerPrefs.SetFloat("Grade",mGrade)//读取数据mName=PlayerPrefs.GetStrin...

2019-08-08 21:30:00 15660 2

原创 Unity小技巧——设置代码编译时机

当编辑器处于播放中时,如果我们修改了代码,可能会遇到编译造成播放卡住。其实我们可以设置代码的编译时机。Editor->Preferences->General->Script Changes While PlayingRecompile And Continue Playing 编译并继续播放Recompile After Finished Playing 停止播放...

2019-08-04 23:54:16 3104

原创 Unity3D 编辑器扩展 跳转显示指定目录

做编辑器扩展开发时,假如我们生成一个文件到Assets之外的目录,要查看它的时候,需要从系统路径一步步打开到那个目录。Unity给我们提供了一个API可以直接打开指定目录,类似Project窗口右键文件选择“Reveal in Finder” 从系统窗口显示文件。EditorUtility.RevealInFinder(string outputPath);利用这个API我们可以做诸如编译成...

2019-08-03 22:29:08 2009

原创 Unity3D 用 Debug.DrawRay 查看射线检测

当我们利用 Physics.Raycast 做射线检测的时候,可以通过Debug.DrawRay函数直接在场景里显示射线出来,方便直观查看。public static void DrawRay(Vector3 start, Vector3 dir, Color color = Color.white, float ...

2019-07-30 23:08:05 16924

原创 Unity小技巧——延时销毁GameObject

当我们希望延迟一段时间销毁GameObject,Component,或者 asset 的时候可以利用下面的函数来实现。不用自己再去实现延迟计时操作。Destroy(Object obj, float t = 0.0F);第二个参数单位为秒,物体将在t秒后被销毁。using UnityEngine;public class ScriptExample : M...

2019-07-27 16:14:30 11013

原创 Unity3D 编辑器扩展 Editor中使用协程

在运行时环境下,我们可以利用协程 Coroutines ,通过UnityWebRequest 或者WWW 来做文件下载,贴图加载等操作。但是在编辑器模式下,StartCoroutine() 并不能起作用。比如不能通过WWW 来下载文件。(可以通过WebClient 等.net自身类库来实现) 然而一些对贴图等Unity原生资源的操作,又不允许在其他线程中操作。那么我们如何来实现类似运行时协程...

2019-07-22 20:29:13 3008

翻译 Unity3D 编辑器扩展 强大的OnValidate

需要验证一些数据我们都知道,搭建创建的编辑器扩展脚本,基本上都是给关卡设计或者策划人员用的。在编译游戏的时候对他们输入的一些数值进行校验,是一个好的习惯。他们不需要关心一些数值的限制,但是作为开发人员的我们是需要的。如何使用OnValidate?在官方文档上仅有一个简短的说明,并且没有示例代码。编辑器模式下OnValidate 仅在下面两种情况下被调用:脚本被加载时Inspecto...

2019-07-20 23:13:18 12105

原创 Unity3D UGUI 渐变效果

今天我们利用BaseMeshEffect来实现 UGUI的Text和Image 渐变。先上效果UGUI的Image、Text等都是Mesh 网格,这个可以通过选择wireframe显示方式来查看,如下图,每个字符都是一个网格。渐变效果代码:using UnityEngine;using System.Collections;using System.Collections.Gen...

2019-07-19 00:11:09 1531

原创 Unity3D 开发Android平台常用命令

Unity发布Android平台的版本,或者真机调试的时候,少不了一些常用的命令行操作。我们今天就来列举一些。adb devices 显示当前连接的所有设备列表,包括模拟器adb install test.apk 安装应用程序 test.apkadb install -r test.apk 重装(覆盖安装)应用程序 test.apkadb pull /sdcard/t...

2019-07-19 00:08:50 335

原创 Unity3D Shader之光晕Glow

今天我们来实现下光晕效果主要是利用顶点的view direction 和 normal direction 的点积 来做为光晕颜色的alpha值,越靠近边缘的顶点,abs(dot(viewDirection, normalDirection) )的值越小, 将 float opacity = pow(strength, _Strength); 作为颜色的alpha值,那么越靠近边缘就越透明。...

2019-07-19 00:05:30 4100

原创 Unity3D Shader之伪雾化效果

我们不使用Fog,通过Sprite 使用定制的shader 来实现上面的效果。这个Shader主要做的事情:在Sprite的底部叠加天空的颜色,看起来像渐渐消失。叠加的颜色强度依赖于距离相机的距离,离相机越远,则越强。Shader如下:// Upgrade NOTE: replaced 'mul(UNITY_MATRIX_MVP,*)' with 'UnityObjectToClipPo...

2019-07-17 22:50:57 692

原创 Unity小技巧——Console 中使用富文本

Unity里UGUI中Text组件可以使用富文本。其实也可以通过Debug.Log 中使用符富文本 来区别输出内容。官方说明文档 https://docs.unity3d.com/Manual/StyledText.html比如下面这样。我们可以通过下面对string 的扩展来方便使用public static class StringTagExt{ public static...

2019-07-16 23:12:04 525

原创 Unity小技巧——编辑模式Play Mode指定颜色

是否经常遇到修改了好多Inspector中的数值,最后发现是Play模式,停止播放后修改的值都丢失了。可以给Play模式指定一个特殊的颜色,非常容易区分出来当前是play模式还是编辑模式。...

2019-07-16 23:10:42 2579

原创 Unity3D 在Hierarchy窗口中显示物体所属Layer

我们想要查看场景中物体的Layer时,需要在Hierarchy窗口中点击GameObject,然后才能在Inspector中显示Layer等相关属性,当场景物体多的时候,这个操作还是比较麻烦的。那么有没有一种方式可以方便直观查看所属Layer呢。今天我们就利用EditorApplication.hierarchyWindowItemOnGUI 这个接口来实现直接在Hierarchy窗口中显示物...

2019-07-16 23:09:15 1847

原创 Unity小技巧——Hierarchy中搜索脚本

如何在Hierarchy窗口中查看脚本挂在哪个GameObject上了尼?自己写个插件肯定可以,但是其实Unity已经提供了这个功能。在Hierarchy窗口中输入GameObject名字的一部分是可以搜索GameObject出来的。要想搜索脚本挂在哪个GameObject上了,需要输入完整的脚本文件名称进行搜索,而且大小写要一致。...

2019-07-16 23:07:12 2557

原创 Unity小技巧——Vector2Int Vector3Int

Vector3和Vector2的每个分量 默认为float 浮点数,但是有些情况下,我们只需要整形int就可以了。Unity提供了Vector2Int 和 Vector3Int.public class TipsVector2Int : MonoBehaviour { //UnityTips By @UnityAsk [Header("当不需要精确到浮点数的适时候,比如只用整形就可以的时候...

2019-07-16 23:05:55 6150

原创 Unity小技巧——Inspector中插入数组元素

选中其中一个元素,CTRL+D复制,然后修改它的值,相当于插入了一个新元素。这样不用为了插入一个元素,而需要顺次修改后面所有原素的值。

2019-07-16 23:02:30 3717 2

原创 Unity小技巧——创建Material直接设置Shader

Project窗口中右键选中的Shader创建Material,这样创建好的Material将会直接设值为该Shader.

2019-07-16 23:01:05 1398 1

原创 Unity小技巧——EditorOnly Tag

如果场景中的物体,我们不希望打包的时候打进包里,可以给他设置Tag为EditorOnly,这样就不会编译进最终的包里了。

2019-07-16 22:59:14 813

转载 Unity小技巧——Header, Tooltip and Space

通过 “Header”, “Tooltip” and “Space” 属性来组织Inspector中的属性显示

2019-07-16 22:57:34 12466

原创 Unity3D 生成编辑器场景列表,快速切换

平时开发中,Project窗口中可能会存在很多个scene,每次切换场景编辑的时候,需要到Project窗口中进行查找,非常麻烦,特别是引入的一些插件也自带了一些Scene。那么有没有一种方式,可以快速的找到场景并进行切换呢?今天我们就来解决下这个问题。通过脚本遍历Project窗口中的所有scene 文件,并在菜单栏生成下拉列表,点击对应的场景就能快速的切换过去。首先创建ScenesMe...

2019-07-15 23:21:30 863

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除