Unity3D开发
UnityAsk
这个作者很懒,什么都没留下…
展开
-
Unity3D 生成编辑器场景列表,快速切换
平时开发中,Project窗口中可能会存在很多个scene,每次切换场景编辑的时候,需要到Project窗口中进行查找,非常麻烦,特别是引入的一些插件也自带了一些Scene。那么有没有一种方式,可以快速的找到场景并进行切换呢?今天我们就来解决下这个问题。通过脚本遍历Project窗口中的所有scene 文件,并在菜单栏生成下拉列表,点击对应的场景就能快速的切换过去。首先创建ScenesMe...原创 2019-07-15 23:21:30 · 817 阅读 · 0 评论 -
Unity3D 拖拽力量指示条
游戏中,有时需要一个指示条来标明拖拽的力度。比如愤怒的小鸟 拖弹弓的力度,或者高尔夫游戏里挥杆的力度等等。今天我们使用LineRenderer来实现下上面效果图中的效果。首先在Update中侦听鼠标按下,移动,和松开三个时间 if (Input.GetMouseButtonDown(0)) { } if (Input....原创 2019-08-11 22:05:36 · 954 阅读 · 3 评论 -
Unity3D 未挂载脚本自动初始化
通过RuntimeInitializeOnLoadMethodAttribute属性,可以在游戏启动时自动执行没有挂载到GameObject上的脚本。这样在做一些插件的时候会比较方便,不需要用户手动去添加脚本,只要启动游戏就能直接自动执行。// Create a non-MonoBehaviour class which displays// messages when a game is ...原创 2019-08-08 21:34:52 · 2456 阅读 · 0 评论 -
Unity3D 无限循环视差背景
今天我们来实现下 游戏中常用的循环视差背景效果,效果如上图。首先准备5张背景图,用来做远中近景。将背景图片的属性设置为Sprite为了能无缝循环 ,将5背景图片拖入到场景中。然后复制两份出来,一份设置x坐标为-20,一份设置x坐标为20,一份设置x坐标设置为0。将同一层的三张图打组,并将脚本挂到组上。并以此设置Sprite的“Order in Layer” 值,越远的设置的值为越小。...原创 2019-08-08 21:32:37 · 2970 阅读 · 0 评论 -
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 · 15277 阅读 · 2 评论 -
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 · 10773 阅读 · 0 评论 -
Unity小技巧——设置代码编译时机
当编辑器处于播放中时,如果我们修改了代码,可能会遇到编译造成播放卡住。其实我们可以设置代码的编译时机。Editor->Preferences->General->Script Changes While PlayingRecompile And Continue Playing 编译并继续播放Recompile After Finished Playing 停止播放...原创 2019-08-04 23:54:16 · 2972 阅读 · 0 评论 -
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 · 16298 阅读 · 0 评论 -
Unity3D Shader之伪雾化效果
我们不使用Fog,通过Sprite 使用定制的shader 来实现上面的效果。这个Shader主要做的事情:在Sprite的底部叠加天空的颜色,看起来像渐渐消失。叠加的颜色强度依赖于距离相机的距离,离相机越远,则越强。Shader如下:// Upgrade NOTE: replaced 'mul(UNITY_MATRIX_MVP,*)' with 'UnityObjectToClipPo...原创 2019-07-17 22:50:57 · 631 阅读 · 0 评论 -
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 · 1491 阅读 · 0 评论 -
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 · 317 阅读 · 0 评论 -
Unity3D Shader之光晕Glow
今天我们来实现下光晕效果主要是利用顶点的view direction 和 normal direction 的点积 来做为光晕颜色的alpha值,越靠近边缘的顶点,abs(dot(viewDirection, normalDirection) )的值越小, 将 float opacity = pow(strength, _Strength); 作为颜色的alpha值,那么越靠近边缘就越透明。...原创 2019-07-19 00:05:30 · 3973 阅读 · 0 评论 -
Unity3D UGUI按钮长按事件
UGUI 对按钮提供了 onClick事件侦听,但是没有长按事件。网上看了些教程,大都是通过在Update里面计时来实现。下面通过Invoke来实现。这样不需要每帧都引入Update计算。Invoke 在一个固定的时间之后调用一个函数。我们将这个时间设置为 holdTime = 1f;单位为秒。当按键松开或者从按钮上移开时,调用CancelInvoke() 取消延时调用。using Uni...原创 2019-08-17 21:43:33 · 2116 阅读 · 0 评论