自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

木头圈

个人工作和学习中遇到的一些问题总结和记录

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

原创 本文分享Unity中的AI算法和实现3-有限状态机FSM(下)

Unity中的AI算法-FSM.

2022-12-14 15:27:12 1543 3

原创 Unity中的AI算法和实现2-有限状态机FSM(上)

Unity中的AI算法-FSM.

2022-11-01 19:06:07 1492

原创 Unity中的AI算法和实现1-Waypoint

Unity中的AI算法和实现1-Waypoint

2022-10-28 18:26:17 2545

原创 2022-8月和9月的总结(人生和职场反思)

2022年8月9月一些心路历程记录.

2022-09-29 10:10:57 743 4

原创 Unity中的MonoBehaviour脚本-基础知识和继承关系

介绍MonoBehaviour脚本的基础知识.

2022-08-22 19:35:31 7159 5

原创 写在工作的第十年: 谈一谈专注和基础的重要性

个人感悟

2022-08-09 09:30:15 1945 8

原创 C#重点问题之Struct和Class的异同

介绍struct和class的相同点和不同点, 以及值类型和引用类型的基础原理和概念等.

2022-08-01 13:10:29 2123

原创 C#中使用async和await实现异步Udp通讯

本文使用async和await实现异步udp通讯, 顺便了解和学习异步编程和upd通讯的相关知识/

2022-07-22 12:23:39 3120 2

原创 Unity中SmoothStep介绍和应用: 溶解特效优化

介绍了在Unity使用smoothstep等插值函数来优化溶解特效的原理和实践.

2022-07-04 11:58:31 2686

原创 Unity中RampTex介绍和应用: 溶解特效优化

介绍了在Unity使用RampTex来优化溶解特效的原理和实践.

2022-07-01 18:49:29 1583 1

原创 Unity中实现溶解(Dissolve)特效及其原理解析

分享Unity中常见的溶解特效实现, 并分析其原理.

2022-06-28 14:36:46 4757

原创 Unity中使用代码将预制加载到场景

本文介绍如何在Unity中使用代码将预制加载到场景, 并同时介绍了如何通过代码来替换指定组件.

2022-06-17 10:50:06 4025

原创 Unity中使用代码选中对象(Ping)

介绍Unity中如何使用代码选中对象

2022-06-17 10:06:45 1742

原创 Unity官方Shader介绍: TRANSFORM_TEX

Unity的Shader中经常可以看到的TRANSFORM_TEX的使用, uv动画的原理由来等

2022-06-13 11:48:53 3950

原创 Unity中的UGUI源码解析之图形对象(Graphic)(2)-ICanvasElement

Unity中的UGUI源码解析之图形对象(Graphic)(2)-ICanvasElement在上一篇文章中, 我们对整个Graphic部分做了概述, 这篇文章我们介绍ICanvasElement和CanvasUpdateRegistry.ICanvasElement是一个接口(Interface). 抽象了能够在画布上显示的元素行为. 文件所在为: UnityEngine.UI/UI/Core/CanvasUpateRegistry.cs.相关的辅助类有: enum CanvasUpdate和cla

2022-05-24 20:06:52 967 1

原创 Unity中的UGUI源码解析之图形对象(Graphic)(1)-概述

Unity中的UGUI源码解析之图形对象(Graphic)(1)-概述从今天开始通过几篇文章一步步深入, 围绕**图形对象(Graphic)**展开对UGUI源码的解析.图形对象相关的类和接口有:UIBehevior: 大部分UI类的父类, 继承MonoBehaviour并添加了部分生命周期, 在之前的文章中有介绍.ICanvasElement: 接口类(Interface), 抽象所有能在Canvas上显示的对象行为CanvasUpdateRegistry: 单例工具类, 用于辅助图形对象向C

2022-05-17 17:37:31 997

原创 Unity中在Editor下的延迟调用

Unity中在Editor下的延迟调用说到延迟调用, 大家肯定首先想到的是MonoBehavior的协程, 但是在Editor不太好用. 我们这里给出两个方案供大家选择.async第一种比较简单, 利用C#的特性, 需要c# 5.0以上的版本支持.var delayCall = async () =>{ await Task.Delay(System.TimeSpan.FromSeconds(2)); Debug.Log("do something.............

2022-05-11 10:34:21 2118 1

原创 Unity中的UGUI源码解析之事件系统(9)-输入模块(下)

Unity中的UGUI源码解析之事件系统(9)-输入模块(下)接上一篇文章, 继续介绍输入模块.StandaloneInputModule类是上一篇文章介绍的抽象类PointerInputModule的具体实现类, 事件系统的主要处理部分就在这个类.TouchInputModule类本来是单独处理触摸指针事件的触摸事件部分, 但是后面被挪到StandaloneInputModule中了, 不在维护, 所以我们也不介绍了.今天就和大家一起一步步来认识StandaloneInputModule.Sta

2022-04-19 20:30:00 3721

原创 Unity中的UGUI源码解析之事件系统(8)-输入模块(中)

Unity中的UGUI源码解析之事件系统(8)-输入模块(中)接上一篇文章, 继续介绍输入模块.Unity中主要处理的是指针事件, 也就是在2d平面上跟踪指针设备输入坐标的的事件, 这一类事件有鼠标事件, 触摸事件等.PointerInputModuleUnity将使用抽象类PointerInputModule定义指针输入的基本信息和基本函数, 由其子类StandaloneInputModule来具体实现.相关类TouchPhaseTouchPhase用来描述触摸阶段.Began: 开始触

2022-04-09 09:45:00 1061

原创 Unity中的UGUI源码解析之事件系统(7)-输入模块(上)

Unity中的UGUI源码解析之事件系统(7)-输入模块(上)从今天开始,我们进入事件系统的的最后一部分: 输入模块(InputModules).输入模块是事件系统的核心, 是真正使用检测和调用回调的地方.输入模块主要有几个角色, 分别为:BaseInput: UIBehavior类, 对Input模块部分函数的简单封装BaseInputModule: 输入模块的抽象基类, 定义了一些通用操作, 属性和字段PointerInputModule: 处理PointerEvent(指针事件)的输入模

2022-04-01 10:00:20 3712

原创 Unity中的UGUI源码解析之事件系统(6)-RayCaster(下)

Unity中的UGUI源码解析之事件系统(6)-RayCaster(下)接上一篇文章, 继续介绍投射器.GraphicRaycasterGraphicRaycaster继承于BaseRaycaster, 是BaseRaycaster具体实现类, 是针对UGUI元素的投射器, 需要对象上同时存在Canvas组件.值得一提的是, GraphicRaycaster和PhysicsRaycaster还有Physics2DRaycaster存放的目录不同, 后面两个放在EventSystem目录下, 而Gr

2022-03-25 22:30:00 2303

原创 Unity中的UGUI源码解析之事件系统(5)-RayCaster(上)

Unity中的UGUI源码解析之事件系统(5)-RayCaster(上)今天要分享的是事件系统中的射线投射器(RayCaster).Unity使用射线投射器来收集和鉴别被点击的游戏对象.射线投射的原理很简单, 就是在屏幕点击的位置发射一条射线, 根据一些规则收集被射线穿透的对象, 然后再根据一些规则将这些对象排序, 选出距离屏幕最近的对象, 最后在这个对象上进行各种事件操作.所以研究射线投射就是要围绕这个原理来展开, 有了方向, 我们才不会陷入各种代码中变得一头懵.由于内容比较多, 我们分山下两篇

2022-03-20 13:15:00 1308

原创 PBR基础理论通俗解释

PBR基础理论通俗解释今天给大家介绍PBR的基础理论, 不会涉及比较深的具体算法, 算是一篇扫盲的文章, 尽量尝试说人话, 让大家能够对PBR有基本的了解.什么是PBR?PBR是基于物理的渲染(Physically Based Rendering), 也就是说通过模拟物理世界的方式来渲染.既然有基于物理的渲染, 那么肯定就有不是基于物理的渲染呗?事实上的确是存在各种渲染方式, 比如早期的基于经验的渲染模型: Phong, Blinn-Phong, 基于非真实感的渲染: 卡通渲染等.PBR基本上可

2022-03-18 21:45:00 3255

原创 Unity中的UGUI源码解析之事件系统(4)-ExecuteEvents

Unity中的UGUI源码解析之事件系统(4)-ExecuteEvents今天介绍消息系统: ExecuteEvents.Unity实现的消息系统很简单, 一个静态类加一堆接口, 在处理事件时动态获取需要处理事件的对象, 几乎没有状态维护, 虽然每次处理事件都需要进行获取, 会损失一部分性能, 但是由于每个对象上的组件一般不会太多, 这个性能损失几乎可以忽略不计, 而带来的优势就是去除了大部分的状态管理, 极大的降低了维护和理解难度.EventInterfacesUnity通过接口(Interfac

2022-03-16 10:09:26 6527 4

原创 Unity中的UGUI源码解析之事件系统(3)-EventData

Unity中的UGUI源码解析之事件系统(3)-EventData为了在事件系统中传递数据, Unity提供了EventData相关的类来封装这一类数据. 了解这些结构有助于我们对后面模块的学习.EventData相关的类有几个, 下面一一介绍.AbstractEventData: 事件数据的抽象基类BaseEventData : AbstractEventData: 基础的事件数据类PointerEventData: BaseEventData: 指针事件数据类AxisEventData:

2022-03-12 08:45:00 2856

原创 Unity中的UGUI源码解析之事件系统(2)-EventSystem组件

Unity中的UGUI源码解析之事件系统(2)-EventSystem组件今天介绍我们的第一个主角: EventSystem.EventSystem在整个事件系统中处于中心, 相当于事件系统的管理器, 负责协调各个模块.其本身是一个MonoBehavior, 继承于UI模块统一的父类UIBehaviour.在一个场景中添加任意的UI控件, 会默认添加一个EventSystem对象, 身上挂载EventSystem组件和一个StandaloneInputModule(独立输入模块)组件. 各种事件要生

2022-03-11 09:26:13 1591

原创 Unity中的UGUI源码解析之事件系统(1)-概述

Unity中的UGUI源码解析之事件系统(1)-概述从今天开始通过几篇文章一步步深入, 围绕事件系统展开对UGUI源码的解析.网上大部分文章讲的是事件系统是什么, 怎么用. 我的文章会在这些基础之上进一步探讨其原理和设计思想, 当然, 只是我的一家之言, 也不一定正确(特别是不同版本之间的差异是存在的). 所以还是希望能给大家提供的是一种思路, 省去大量实践和抠细节的研究, 大家可以基于我的研究(也可以纠正), 发散出自己的理解.好了, 下面开始今天的内容.广义的事件系统是指Unity中整个事件相关

2022-03-10 09:31:31 4244

原创 Unity中调试开源的UGUI源码

Unity中调试开源的UGUI源码最近有点颓废, 很久没写文章了, 为了激励自己, 准备开一个新坑: 结合官方文档, 我自己的使用体验, 还有我自己的理解等各个方面来对UGUI的源码进行简单的梳理和分析.感觉这个系列我可以写一年, 再也不担心找不到内容水文章了, 哈哈.看到网上很多人都做过这个尝试, 但是没写几篇文章就放弃了, 希望我自己能够尽可能坚持下去.好了, 废话不多说, 正式开始今天的内容.今天是整个系列的开篇, 主要介绍如何将官方开源的UGUI源码嵌入项目进行调试.环境搭建我们首先需

2022-03-07 15:14:05 3996

原创 Unity中使用软连接快速切换平台

Unity中使用软连接快速切换平台Unity会把所有的资源在不同平台下进行不同的设置, 且每次切换平台都需要重新计算, 在大型项目中, 由于资源很多, 切换的成本比较高, 可能动不动的就是几十分钟, 但是偶尔我们又需要在不同的平台下看看不同的效果或者需要在真正出包之前先本地跑一遍, 所以难免会有切换平台的需求.有些同学会搞两个工程, 或者搞两个Libarary文件夹, 或者就直接在Android平台下开发了, 本质上这些方案都能达到我们的目的, 只是可能略显繁琐.而今天给大家分享另一种个方案, 相对来

2022-02-16 10:51:04 3735

原创 Unity中使用Profiler进行Android远程调试

Unity中使用Profiler进行Android远程调试这两天研究了下Profiler进行远程调试Android, 查看内存和CPU使用情况等. 原来其实就研究过, 只是很久不用又忘了, 所以写文章记录一下, 避免下次又重复采坑.网上有些文章写得比较明白, 比如这篇, 基本上照着做问题不大. 我这篇文章主要是做一个记录, 还有加上一些自己的总结. 同时也怕别人的文章不见了, 而且总归自己过一遍也是好的.实现原理剖析原理其实很简单, 如果有同学平时使用过AndroidStudio应该对adb命令不陌

2022-02-10 15:33:01 3959

原创 2021年终总结

2021年终总结年底事情比较多, 心思比较跳跃, 本来想把资源管理部分最后一篇文章更新了, 但是总是沉不下心来写作, 就这么拖着了.今天是农历年的倒数第二天, 明天就放假了, 趁着这个机会对2021年做一个简单的总结, 回顾下过去, 展望下未来, 这也是今年的最后一篇文章, 算是一个收尾吧.在2020年, 我做了一个艰难的决定, 从呆了4年的公司离职, 并且同时从Cocos方向转向Unity方向.这个决定和之后一系列的故事让我一度十分痛苦和怀疑自己. 有些同学也比较好奇我转向的事, 所以我还是简单说

2022-01-30 15:13:20 2200

原创 Unity中的资源管理-一整套简单的资源管理方案(1)

本文分享Unity中的资源管理-一整套简单的资源管理方案(1)经过了一系列的文章, 我们终于来到了本专题的最后一部分.在接下来的几篇文章中, 作者会提供一套简单的资源管理方案给大家学习和参考, 相信只要简单的修改就可以直接在项目中使用.整套方案基本会涵盖我们之前文章提到的所有内容.在本篇文章中, 我们先提纲挈领的将核心的结构和布局作简单介绍, 在后续的文章中将其填充和丰满.好了, 废话不多说, 马上开始今天的内容.需求分析首先我们需要在Runtime下使用Ab或者Resources, 在Edi

2022-01-13 09:50:08 7240

原创 Unity中的资源管理-使用Profile分析内存使用情况

本文分享Unity中的资源管理-使用Profile分析内存使用情况在上一篇文章中, 我们介绍了Ab的加载和使用, 并简单列举了其内存分布情况. 今天我们继续探索Ab的内存, 观察和实验其在各种阶段的分布情况.Profile性能分析工具在一切开始之前, 我们先简单介绍下Unity提供的性能分析工具: Profile.Profile是Unity提供的一款性能分析工具, 与Editor一同发布, 我们可以在Window菜单下找到它, 不同版本的位置不同, 比如在Unity2017(Window->P

2021-12-29 09:27:15 6951 1

原创 Unity中的资源管理-AssetBundle(2)

本文分享Unity中的资源管理-AssetBundle(2)在上一篇文章中, 我们介绍了Ab的基础知识, 并了解到如何构建Ab, 最后还给出了几种不同的Ab管理方案.今天我们接着聊聊Ab的加载和卸载.Ab的使用总的来说比较简单, 前提是我们不操心加载好的Ab和从Ab中加载出来的资材, 但整个资源管理的难点就在于此.目前我们只是谈论Ab最核心的使用而不涉及到基于此的各种资源管理方案. 这部分会在后面的文章给出.好了, 下面开始今天的内容.Ab的加载和使用基本的加载接口Unity提供了Ab的同步

2021-12-27 22:00:00 2299

原创 Unity中的资源管理-AssetBundle(1)

本文分享Unity中的资源管理-AssetBundle(1)在上一篇文章中, 我们简单介绍了Unity中的资源和基本的使用, 今天我们详细介绍下使用AssetBundle来管理资源.AssetBundle介绍AssetBundle, 下面简称Ab, 本身的概念十分的简单, 顾名思义, 就是一系列资材打成的包而已.相比Resources文件夹来组织资源的方式, Ab将使用某种方式将资源按照"包"的形式组织.我们可以将某个文件夹内的所有资源组织为一个Ab, 也可以将某类资源组织为一个Ab, 还可以将某

2021-12-22 18:08:52 4024

原创 Unity中的资源管理-资源类型和基本使用

本文分享Unity中的资源管理-资源类型和基本使用真不容易, 经过几篇文章的铺垫, 我们终于进入正题了.今天继续给大家聊聊资源管理中的基础知识: 资源的类型和基本的使用.Unity中的资源类型这一部分在官方文档里介绍的很清楚, 有兴趣的同学可以自行跳转:如果不愿意看官网, 以下我们简单做一下梳理和总结. 大家也可以有个大致的印象.Unity常见的资源类型有:Texture(纹理), Sprite(精灵): BMP、TIF、TGA、JPG、PNG 和 PSDSound(音效): Mp3,

2021-12-21 12:21:17 3737

原创 Unity中的资源管理-引用计数

本文分享Unity中的资源管理-引用计数在前面的文章中, 我们一起学习了对象池的基本原理和几种实现, 今天和大家继续聊聊另一个资源管理中比较重要的技术: 引用计数.GC的基础知识GC(Garbage Collection)是一种用来自动管理内存的方案, 开发者不需要过多的操心资源的释放问题, 很多语言(比如C#, Java)等, 都有自己的GC.我们知道, 内存分配可以来自于栈和堆, 一般栈空间是跟随函数的生命周期, 在函数使用期间申请, 在函数使用后释放, 一般在函数内部申请的局部变量(非new关

2021-12-20 17:43:51 2623

原创 Unity中的资源管理-对象池技术(3)

本文分享Unity中的资源管理-对象池技术(3)在上两篇文章中, 我们一起学习了普通类的两种对象池实现, 今天接着介绍Unity中GameObject(主要是预制实例化对象)的对象池.GameObjectPool的必要性我们知道在游戏前端的开发中, 大部分情况下并不会像服务器开发一样会涉及到特别大量的对象的创建和销毁, 一般的容器最多也就几十上百个对象, 并不会有太大的性能压力, 所以普通类的对象池在客户端使用的并不多, 一般也就资源管理等少数场合会涉及到巨量普通类对象的使用, 而游戏前端更多利用对

2021-12-17 18:54:41 2207

原创 Unity中的资源管理-对象池技术(2)

本文分享Unity中的资源管理-对象池技术(2)在上一篇文章中, 我们一起学习了普通类的对象池, 这种实现有一定的特点和适用范围:只能存放相同类型的对象所有对象都一视同仁, 在产生和回收后都需要额外的操作, 比如产生后需要初始化, 回收后需要重置信息今天要介绍一种更加通用和灵活的实现方式: 这种对象池只负责存取对象, 而这些对象不拘泥类型且不需要额外的操作就能使用和回收.简单说就是上一个对象池实现特点的反面.对象池? 容器?可能有些同学会有疑问, 如果只是需要一个存取对象的容器, 那么我用

2021-12-16 16:57:34 1346

原创 Unity中的资源管理-对象池技术(1)

本文分享Unity中的资源管理-对象池技术(1)接下来几天, 作者会按照自己的理解写几篇关于Unity中的资源管理相关的文章.大概会涉及到:对象池: 分为普通类和GameObject(主要是预制)的对象池引用计数技术Unity中的资源基本概念, 分类, 基本使用: 包含Resources, AssetDatabaseUnity中的Ab包: 包含Ab包的介绍, 生成, 加载和卸载Unity中使用Profiler进行内存分析一整套资源管理方案今天分享对象池技术的第

2021-12-15 17:01:18 2307

空空如也

空空如也

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

TA关注的人

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