Unity3D
文章平均质量分 94
ls9512
这个作者很懒,什么都没留下…
展开
-
【Unity / Data Binding】开源数据绑定插件 UBind
UBindUBind 是一个适用于 Unity 的数值绑定组件,用于快速实现UI和逻辑数据的关联绑定。UBind 组件采用MIT协议开源:[OpenUPM][Github Link][Gitlab Link]后续功能更新和改进将会持续提交到以上git仓库中,本文内容将不会持续更新。特性使用方法2.1. 组件方式2.1.1. 常用组件绑定器2.1.2. 属性绑定器2.1.3. 类型绑定器2.2. 代码方式2.2.1. Monobehav...原创 2021-05-31 18:10:58 · 3123 阅读 · 2 评论 -
【Unity / Animation】开源插值动画组件 UTween
UTweenUTween 是一个 Unity 环境下的插值动画组件,可以通过内置组件快速配置动画,或者通过代码编写动画。快速开始1.1. 特性1.2. 环境要求1.3. 功能预览1.4. 插件安装 参数定义内置功能3.1. 核心组件3.1.1. Tweener3.1.2. TweenManager3.1.3. TweenPool3.1.4. TweenAnimation3.1.5. TweenAnimationAsset3.2. 数据类型原创 2021-02-19 16:06:21 · 1235 阅读 · 1 评论 -
【Unity / Event】开源通用事件模块 UEvent
文章目录UPlugins / UEvent1. 简介1.1. 环境1.2. 文件1.3. 特性1.4. 结构1.5. 约定1.6. 接入2. 组件2.1. 事件管理器 EventManager2.2. 事件分发器 EventDispatcher2.3. 事件监听器 EventListener2.4. Object 事件监听器 ObjectListener2.5. Unity MonoBehaviour 事件监听器 MonoListener2.6. 监听事件处理器 EventHander3. 可选特性标签 A原创 2020-09-09 15:45:24 · 609 阅读 · 0 评论 -
【Unity / Particle】计算 粒子特效 ParticleSystem 的播放时间长度
需求分析项目开发过程中,特效往往是资源和性能开销的大户,一般都会使用池的方式来管理和重用特效资源,而不是每次在需要时就重新加载生成,这就需要有一套机制能够在特效播放结束后,自动回收特效,因而需要提前知道特效的播放时间长度。这是一种比较常见的情况,也可能会有其他的需求,比如特效A、B、C需要在每个特效播放完后立即播放另一个特效,实现连续播放多个特效的效果,由于特效是可能随时修改效果的,特效的播放时...原创 2020-01-03 10:24:26 · 4472 阅读 · 3 评论 -
【C# / Extension】 扩展方法04 —— 扩展IEnumerable
扩展方法系列C# 扩展方法简介C# 扩展方法01 —— 扩展 String & StringBuidlerC# 扩展方法02 —— 扩展ByteC#扩展方法03 —— 扩展IList扩展 IEnumerable 接口的意义IEnumerable 和IEnumerable 接口在 .NET 中是非常重要的接口,大多数集合类型都实现该接口以提供遍历、过滤、排序、搜索等功能。虽然这些...原创 2020-01-03 09:50:58 · 609 阅读 · 0 评论 -
【Unity / Particle】快速调整粒子特效尺寸
开发中经常需要对粒子特效的尺寸进行调整以适配具体应用场景,而粒子特效往往由多个粒子系统组件(Particle System)组成,如果逐一调整尺寸会比较麻烦,粒子特效的尺寸也无法通过父节点的缩放统一修改。因此可以写一个简单的工具类,快速对粒子特效尺寸进行整体调整,原理也很简单,遍历所有节点的粒子系统组件,并记录其原始缩放值(因为特效在设计阶段为了调整效果已经改过缩放值,默认尺寸下缩放并不一定为1...原创 2019-11-28 15:43:18 · 5712 阅读 · 0 评论 -
【Unity / Thread】Unity 中子线程回调主线程的方法
Unity 引擎的游戏逻辑和渲染,都是在主线程中进行的,和大多数其他游戏引擎一样,Unity 也是一个单线程的引擎。这与常规开发的思路可能不太一样,通常认为多线程能够很大程度上提升程序的性能效率,何况是游戏这种需要大量资源和大量计算的复杂程序。其实不然,单线程能为游戏引擎开发和游戏开发带来很多好处,未经过精心设计的多线程也可能会为中后期开发带来灾难性的后果。但这不是本文要讨论的重点,感兴趣的话可以...原创 2019-09-20 16:05:48 · 5405 阅读 · 0 评论 -
【Unity3D / Animation】实时动画,使Animation不受TimeScale影响
Unity 中的 Animation 组件播放动画时,依赖 Time.deltaTime 进行采样计算播放进度,如果游戏中改变了 timeScale 的值,则使用 Animation 制作动画也会受到影响,例如游戏胜利时的慢动作特写镜头,如果是依赖 timeScale 实现的,那么此时 UI 上的动画效果也都会一起变慢。Animation 组件与粒子系统类似,通过每一帧采样播放,查看源码可以看到...原创 2019-09-18 17:43:10 · 2232 阅读 · 0 评论 -
【Unity3D / UI】支持设置方向的 UGUI 渐变效果
UGUI Gradient在处理图片、文本的渐变效果时,为了缩减包体一般会使用插件脚本来实现,进而避免使用更多的图片资源,在网上搜索 Unity 渐变效果,一般能找到的都是单向自上而下的渐变效果,源码出处已不可考,大家感兴趣可自行搜索,本文直接给出改进版本,支持设置两端颜色和渐变的方向(上下,左右,左倾斜,右倾斜)。实现效果源代码namespace UnityEngine.UI ...原创 2018-10-24 17:58:42 · 803 阅读 · 0 评论 -
【Unity3D / UI】UGUI Text 文本调整字间距,并适配对齐方式
问题描述最近的项目美术提需求要调整游戏得分显示的数字间隔,发现UGUI的Text组件只提供了行间距的调整,而无法调整字与字之间的间隔,搜索之后发现一篇博文 UGUI之修改Text字间距 ,按文中提供的代码,可以实现文本字间距调整,但是只支持左对齐方式,居中对齐和右对齐时,文本依旧是从左向右计算网格位置,布局都是不对的,因而需要在原文代码的基础上,做出一些调整。问题分析UGUI Text 组件...原创 2018-10-09 11:49:27 · 13992 阅读 · 7 评论 -
【Unity / SDK / Firebase】多个应用接入 Firebase 后 APK 冲突无法安装的问题
问题描述最近公司项目主要面向海外发布,有统计分析的需求,TalkingData 的统计功能稍显薄弱,决定接入 Firebase,应对全球市场。 于是按照 Firebase 官方文档,接入 Unity 版本的的 Firebase SDK,接入过程中也有一些小问题,比如与已经介入的 Admob 和其他中介广告联盟SDK之间的冲突,但这些不是本文的重点,再次不赘述。一番折腾后 Firebase 后...原创 2018-07-17 16:52:43 · 3169 阅读 · 2 评论 -
【Unity3D / UI】 快速处理鼠标事件的方法
Unity的UGUI,处理出表事件,需要自行实现IPointerClickHandler,IPointerDownHandler等接口,很不方便。我们可以把常用接口封装起来,让需要实现鼠标事件的类,继承已经封装好的类即可。using System;using UnityEngine;using UnityEngine.EventSystems;public class Cl原创 2017-04-26 11:04:08 · 2025 阅读 · 2 评论 -
【Unity3D / Extension】 扩展方法01 —— 扩展Transfrom
C#提供了强大而又便利的扩展方法,是我们可以为C#原生、以及各种第三方库中的实例类型增加自定义的方法,这些类的实现,通常是无法看到也无法改变的,但是,通过扩展方法,我们可以为其增加一些极其便利的自定义行为。MSDN上,对扩展方法的定义如下:“扩展方法使您能够向现有类型“添加”方法,而无需创建新的派生类型、重新编译或以其他方式修改原始类型。”Transform是Unity原创 2017-06-16 15:24:20 · 1530 阅读 · 1 评论 -
【Unity3D / Physical】快速处理碰撞事件的方法
Unity的物理系统,处理碰撞事件,需要自行实现MonoBehaviour中的void OnTriggerEnter(Collider)等方法,MonoBehaviour的生命周期方法,有些不太常用,可能会经常不记得、或者打错名字,调试还不容易找到原因,很不方便。我们可以把常用接口封装起来,让需要实现碰撞事件的类,继承已经封装好的类即可。using System;us原创 2017-04-26 11:19:03 · 1773 阅读 · 2 评论 -
【Unity3D / UI】Unity中的Rich Text的使用和封装 —— Markup扩展
Unity 中的 Rich TextUnity中的富文本格式,通过类似html的标签语言来实现,支持常见的加粗,倾斜,颜色等,可以应用于GUI、UGUI和Debug日志输出。Rich Text 的使用原文: We are definitely not amused 显示: We are definitely not amused具体使用方法大多数人应该都已经知道了,详见官方A原创 2018-01-05 16:20:14 · 4057 阅读 · 0 评论 -
【Unity3D / Texture】裁剪纹理 去除边缘空白部分
效果预览裁剪之前: 裁剪之后: 左边,顶部,和右侧的空白部分,都去除了,因为适配窗口显示的原因,看上去图片变大了,实际尺寸是没变的。思路纹理的空白部分,即透明度为0的部分,那么,对图像的各个方向进行逐像素扫描,找出上下左右四个方向,最靠近内侧的,包含有效像素的行或者列的坐标,即可限定有效图像的区域,创建一个新纹理,拷贝出有效区域,即可。 以下是裁剪出图像中所有透明原创 2018-01-08 15:13:59 · 7910 阅读 · 4 评论 -
【Unity3D / Extension】 扩展方法02 —— 扩展GameObject
Unity 扩展方法系列Unity扩展方法01 —— 扩展TransfromGameObject的常用扩展GameObject的很多接口与Transform是重合的,本文略去了一些与Transform完全相同的扩展,如有需要可以参考系列博文第一篇。本文中有些接口也许作为Transform的扩展会更合适一些,看个人喜好和实际需要。也可以把同一接口在GameObejct和Transform...原创 2018-03-26 22:55:24 · 1278 阅读 · 0 评论 -
【Unity3D / Extension】 扩展方法03 —— 扩展RectTransform
Unity 扩展方法系列Unity扩展方法01 —— 扩展Transfrom Unity扩展方法02 —— 扩展GameObjectSize 尺寸扩展获取UI尺寸public static Vector2 GetSize(this RectTransform rect){ return rect.rect.size;}设置UI尺寸的几种常用实现public static voi原创 2018-03-27 14:34:12 · 733 阅读 · 0 评论 -
【Unity / Gradle】 Unity 5.6.x Gradle build APK 报错 Connection refused 解决方法
问题描述公司有一个海外项目需要接入 Admob 并聚合多家广告联盟,同时需要接入 Facekbook 相关服务。由于 Google Play Service 的基础库比较多,加入其它广告SDK后,遇到了 64K问题,安卓代码中方法数量超过了 65536 个,导致 Unity 默认的打包方式 Internal 无法打包成功。 为了解决 64K问题,必须改用 Gradle 方式打包。经过测试,选...原创 2018-06-14 11:57:58 · 3844 阅读 · 0 评论 -
【Unity3D / Particle】实时粒子,使ParticleSystem不受TimeScale影响
Unity原生的粒子系统制作的特效,是依赖deltaTime运行的,因此会受到TimeScale的影响。当通过改变TimeScale的方式来使游戏暂停的话,场景内的特效也全部暂停了。这对于游戏场景内的技能、爆炸等效果来说,被暂停是正常的表现,但对于某些UI的特效,实际上是不应该暂停的。比如新手引导的时候,会把游戏暂停在某一个画面,指引玩家点击某一按钮,围绕按钮的流光就不应该跟着游戏本身暂停。原创 2017-03-04 03:28:02 · 5369 阅读 · 0 评论