- 博客(77)
- 资源 (12)
- 收藏
- 关注
原创 Unity 过场工具(Cutscene)设计(四) ——组件化设计
Unity 过场工具(Cutscene)设计(四) ——组件化设计写到这一篇文章前就开始在考虑如何才能说清楚自己的设计思路,因为后续涉及到编辑器和Runtime框架的实际设计和实现过程,两者之间是互相有设计因果关系的。为了阐述自己的核心设计思路,最终就有了这篇文章。
2023-05-21 15:53:41
915
原创 Unity 过场工具(Cutscene)设计(三)
由于过年来公司的一些事情后准备换工作,到现在才换到下家稳定下来。到动手这篇博客时已经隔了很久好几个月了,后续还是会持续的更新完。
2023-05-07 22:53:44
712
原创 Unity 过场工具(Cutscene)设计(一)
游戏中通常会涉及到过场内容的制作,从而来进行一些强表现,从而来进行剧情相关的串联,使游戏表现类容更丰富。比较典型的游戏 像原神,天刀等等游戏。
2023-01-15 18:53:53
1663
原创 UIGU源码分析18 :射线
源码18 :射线本来是想把UGUI的各个组件分析完 再看其射线相关的实现,但是除了之前EventSystem有RaycastAll,Graphic里也有很多射线相关的函数,感觉有必要先分析分析。RaycasterManager internal static class RaycasterManager { private static readonly List<BaseRaycaster> s_Raycasters = new List<BaseRay
2022-04-16 23:50:47
709
原创 UIGU源码分析17:Image
源码17:ImageImage可以说是用的最多得UI组件了,相比于RawImage来说也复杂得多public class Image : MaskableGraphic, ISerializationCallbackReceiver, ILayoutElement, ICanvasRaycastFilter{ ... [SerializeField] private Sprite m_Sprite; /// How the I
2022-03-30 22:51:15
621
原创 UIGU源码分析16:RawImage
源码16:RawImage /// <summary> /// Displays a Texture2D for the UI System. /// </summary> /// <remarks> /// If you don't have or don't wish to create an atlas, you can simply use this script to draw a texture. /// Keep
2022-03-19 21:24:01
487
原创 UIGU源码分析15:Mask
源码15:Maskpublic class Mask : UIBehaviour, ICanvasRaycastFilter, IMaterialModifier{ [NonSerialized] private RectTransform m_RectTransform; [SerializeField] private bool m_ShowMaskGraphic = true; ...}Mask 组件继承UIBehaviour 同时要实现两个接口IC
2022-03-19 20:30:15
283
原创 UIGU源码分析14:RectMask2D
源码14:RectMask2D前面分析MaskGraphic得时候提到了裁剪相关,这里就分析一下裁剪者组件RectMask2D public class RectMask2D : UIBehaviour, IClipper, ICanvasRaycastFilter { [NonSerialized] private readonly RectangularVertexClipper m_VertexClipper = new RectangularV
2022-03-19 18:28:49
342
原创 UIGU源码分析13:MaskGraphic
源码13:MaskGraphicpublic abstract class MaskableGraphic : Graphic, IClippable, IMaskable, IMaterialModifier{ ... }继承MaskGraphic 的有Image Text RawImage 基本可以使用显示的UI组件都继承了MaskGraphicMaskableGraphic除了继承Graphic外 还继承了三个接口IClippableIClippable 被裁剪者
2022-03-15 22:33:51
562
原创 UIGU源码分析12:Graphic
源码12:GraphicGrahic是UGUI的核心组件,负责显示图像,继承了UIBehaviour,ICanvasElement。它是一个抽象类,是MaskableGraphic(可遮罩图像)的基类,而后者是RawImage,Image和Text的基类GraphicRegistryGraphicRegistry的作用主要是记录每个Canvas画布上激活的Graphic。public class GraphicRegistry{ private static GraphicRegistry
2022-03-13 22:41:31
980
原创 UIGU源码分析11:Canvas和CanvasUpdateRegistry
源码11:Canvas和CanvasUpdateRegistryRuntime类图CanvasCanvas 画布 UGUI的重要组件。 UGUI源码里并没有给Canvas源码 他是在UnityEngine里,这里反射看下源码。Canvas本身提供给引擎调整的参数是上面那些。基本是调整渲染模式 层级 显示等等。源码里有几个比较重要的属性要记录下 public delegate void WillRenderCanvases(); // 公有事件,在CanvasUpdateRe
2022-03-12 22:48:58
7660
原创 GU源码分析10:InputField
源码10:InputFieldInputField就是输入框 提供给用户输入文字内容的 是一个重要的交互手段。比如常见的用来输入用户名 ,密码等等。 public class InputField : Selectable, IUpdateSelectedHandler, IBeginDragHandler, IDragHandler, IEndDragHandler, IPointerClick
2022-03-09 23:36:18
821
原创 UIGU源码分析9:DropDown
源码9:DropDownDropDwon 主要就是为了实现下拉选择的功能public class Dropdown : Selectable, IPointerClickHandler, ISubmitHandler, ICancelHandler{ ... protected internal class DropdownItem : MonoBehaviour, IPointerEnterHandler, ICancelHandler { //Item显示的文字
2022-03-08 00:00:57
274
原创 UIGU源码分析8:Slider
源码8:Slider public class Slider : Selectable, IDragHandler, IInitializePotentialDragHandler, ICanvasElement { ... [Serializable] /// <summary> /// Event type used by the UI.Slider. /// </summary>
2022-03-07 23:59:47
3103
原创 UIGU源码分析7:Scrollbar
#源码7:Scrollbar public class Scrollbar : Selectable, IBeginDragHandler, IDragHandler, IInitializePotentialDragHandler, ICanvasElement { [SerializeField] private RectTransform m_HandleRect; // Direction of movement.
2022-03-06 23:35:29
3765
原创 UIGU源码分析5:Button
源码5:Button前面讲了Selectable的作用 和相关的操作。在UGUI里很多UI控件都是继承Selectable的:Button DropDown Scrollbar Slider Toggle 。 这里就以Button为准分析一下public class Button : Selectable, IPointerClickHandler, ISubmitHandler{ [Serializable] /// <summary> /// Functi
2022-03-05 22:17:01
200
原创 UIGU源码分析6:Toggle 和 ToggleGroup
源码6:Toggle 和 ToggleGroupTogglepublic class Toggle : Selectable, IPointerClickHandler, ISubmitHandler, ICanvasElement{ /// <summary> /// Display settings for when a toggle is activated or deactivated. /// </summary> public enu
2022-03-05 22:15:28
467
原创 UIGU源码分析4:Selectable
源码4:Selectable前面以及讲完了UGUI的输入模块和事件系统,下面要分析一下UGUI的相关控件。对于UI画布上的可视化元素,包括Image/RawImage/Text,存在一个共同的基类Graphic。对于事件系统,每一个可执行操作的元素,例如Button/Toggle等,也存在一个基类Selectable。 本文会谈谈Selectable的实现Selectable简单看下Selectable的定义/// <summary> /// Simple selectabl
2022-03-05 20:45:56
917
原创 UIGU源码分析3 :ExecuteEvents
源码3:ExecuteEvents上面在分析 输入模块的时候 都提到了会有对应的事件发送。具体的实现就在ExecuteEvents 类里面下面我们来分析一下这个事件系统在最上面 有一个委托定义 public delegate void EventFunction<T1>(T1 handler, BaseEventData eventData);带有两个参数 一个是handler 是个泛型 一个是eventData通常这个会包含位置信息 偏移量 点击物体等等基于
2022-03-02 22:22:13
632
原创 UIGU源码分析2:StandaloneInputModule
源码2:StandaloneInputModule在上文EventSystem中,EventSystem调用了BaseInputModule的process函数,将输入的部分交给了输入模块去处理。根据处理流程的不一样,开发者可以实现不同的BaseInputModule子类,并重写process函数。Unity则是提供了默认的StandaloneInputModule类。这一篇文章先来了解BaseInputModule的继承结构,随后以process函数为入口,继续了解事件系统。BaseInputMo
2022-03-02 22:20:00
1308
原创 UIGU源码分析1:EventSystem
源码1:EventSystem private List<BaseInputModule> m_SystemInputModules = new List<BaseInputModule>(); private BaseInputModule m_CurrentInputModule; private static List<EventSystem> m_EventSystems = new List<EventSys
2022-03-02 22:18:45
331
原创 Unity UGUI中两点之间连线的通用实现
这里实现两控件之间进行连线,线段使用图片完成,主要是涉及到坐标的转换和图片的缩放同时也实现了手指和指点ui控件点之间的连线using System.Collections;using System.Collections.Generic;using UnityEngine;using UnityEngine.UI;public class DrawLine : MonoBehav...
2019-12-21 16:15:07
10060
22
原创 Unity3d 2018.3 嵌套Prefab
Unity3d 2018.3 嵌套PrefabUnity 的2018.3版本千呼万唤终于出来了,本人最期待的亮点就是加入了嵌套prefab,下面我就这一些做一些简单的测试首先创建三个prefab都没有任何子物体1在Project上点击任何prefab都会看到open prefab按钮,打开就可预览prefab属性打开后修改prefab上的任意属性Hierarchy属性也会跟着...
2019-01-12 22:29:33
3451
1
原创 lua table设置只读
现在做开发有很多数据都是用的lua表,我们有时候希望只做读取,不希望在读取后再做修改,这里我们就希望lua表设置成只读数据这里我们就需要依赖于lua的元表(Metatable)了, 关于元表不清楚的话可以点击这里查看只读的话需要使用__newindex 元方法__newindex 元方法用来对表更新,__index则用来对表访问 。当你给表的一个缺少的索引赋值,解释器就会查找__...
2018-12-14 23:15:08
893
原创 代码获取Unity编辑器中的窗口
获取Unity编辑器中的窗口这段时间在做编辑器相关内容,有时候需要对Unity自带的窗口做一些操作,这里就需要用代码反射EditorWindow程序集下的类型获取到窗口代码如下using System.Collections;using System.Collections.Generic;using UnityEngine;using UnityEditor;usin...
2018-11-24 01:01:09
3200
原创 UnityEditor 相关记录
UnityEditor 相关好久没做一些记录了,近段时间忙于项目,我主要负责给策划做一些编辑器的支持,Unity编辑器相关的内容用的比较多,在这里做一些记录,以供参考学习自定义EditorWindow继承EditorWindow类,写一个静态方法调用EditorWindow.GetWindow()等api创建一个窗口。在OnGUI方法里使用GUI相关Api进行界面布局,可以使用G...
2018-10-17 22:06:06
281
原创 Unity里用C# 简单读取和写入CSV文件的通用模板
我这里读取和写入csv的想法是想根据一个数据格式类作为判定依据,后面针对的读取想要的数据就比较方便。 我这里默认表数据格式是第一行类型字符串, 第二行属性键, 第三行属性值 。默认的主键ID是int定义一个空的数据类 public class CSVDataBase { //子类里面定义属性,目前只支持(int ,string, fl...
2018-07-14 22:17:39
4707
5
转载 理解lua 语言中的点、冒号与self
转载自:https://blog.csdn.net/wangbin_jxust/article/details/12170233 lua编程中,经常遇到函数的定义和调用,有时候用点号调用,有时候用冒号调用,这里简单的说明一下原理。 girl = {money = 200} function girl.goToMarket(girl ,someMoney) ...
2018-05-28 22:52:28
740
原创 UGUI快速实现摇杆功能
摇杆其实就是根据移动的距离,通过一定得比例算出对象的移动方位和距离 这里我们利用UGUI提供的Scrollrect可快速拿到移动的距离获得(-1, 1)代码如下using System.Collections;using System.Collections.Generic;using UnityEngine;using UnityEngine.EventSys...
2018-05-02 23:53:25
632
原创 xlua入门(5)自定义Loader
xlua执行加载lua代码有两种执行字符串 最基本是直接用LuaEnv.DoString执行一个字符串,当然,字符串得符合Lua语法 比如:luaenv.DoString(“print(‘hello world’)”) xlua的使用文档上说这种方式并不建议。加载Lua文件 用lua的require函数即可 比如:DoString(“require ‘b...
2018-04-22 20:55:22
3791
原创 面试记录
近段时间因为个人的一些想法和当前公司的一些状态申请辞职了。出去面了一些大厂,把其中的一些面试题记录一下。盛大面试题二叉树红黑树 https://blog.csdn.net/whucyl/article/details/17254801 https://blog.csdn.net/varyall/article/details/49622739 https://blog...
2018-04-05 14:24:52
535
转载 lua面向对象是怎么实现的
转载自:http://blog.csdn.net/s_xing/article/details/19575059lua语言中没有真正意义的面向对象,而是通过函数模拟面向对象。我们来看是怎么一步步演化的。基本的函数[plain] view plain copyPeople = {} function People.sayHi() print("Hi, nice to meet you.
2018-03-15 20:23:49
1591
原创 xlua入门(4)c#和Lua之间值类型的传递避免GC
避免值类型的GC 一个C#纯值类型(注:指的是一个只包含值类型的struct,可以嵌套其它只包含值类型的struct)或者C#枚举值加上了这个配置。xLua会为该类型生成gc优化代码,效果是该值类型在lua和c#间传递不产生(C#)gc alloc,该类型的数组访问也不产生gc 除枚举之外,包含无参构造函数的复杂类型,都会生成lua table到该类型,以及改类型的一维数组的转...
2018-02-28 23:08:17
4522
2
原创 xlua入门(3)c#调用Lua脚本
xlua入门(3)c#调用Lua脚本using UnityEngine;using System.Collections;using XLua;public class InvokeLua : MonoBehaviour{ //创建一个接口用于映射lua里的table //也可以用clas或者struct, Dictionary<>, List<&g...
2018-02-27 23:30:05
1135
原创 xlua入门(2)lua来写 UIEvent
c#脚本还是上一篇文章中的脚本,绑定到Button按钮上//在unity上拖入对应的输入组件,添加引用对象到lua脚本中 foreach (var injection in injections) { scriptEnv.Set(injection.name, injection.value); }function start() print("lua start....
2018-02-27 22:42:30
2245
原创 xlua入门(1)lua来写MonoBehaviour
using UnityEngine;using System.Collections;using System.Collections.Generic;using XLua;using System;[System.Serializable]public class Injection{ public string name; public GameObject v...
2018-02-27 22:02:24
1807
转载 Unity UDP Socket的简单使用
转载自:http://blog.csdn.net/u012234115/article/details/46483885由于UDP是面向无连接的通信,所以实际上服务端和客户端是对等的,只不过服务端绑定了一个监听端口,而客户端每次都是自动分配的连接端口,其实也可以做成两边都绑定端口或者都不绑定端口的P2P模式。以下UDP是同步模式。建立两个unity工程,编写脚本,挂到场景中。
2018-01-21 22:10:53
6141
2
转载 Unity TCP Socket的简单使用
点击查看Socket API 转载自:blog.csdn.net/u012234115/article/details/46481845unity内部封装了一个很高层次的网络接口,不过有时候并不需要那么复杂的功能,只是想实现简单的TCP网络连接,可以在unity里面用C#写tcp socket。以下TCP连接是同步模式。建立两个unity工程,编写脚本。服务端usin
2018-01-21 22:00:00
10546
2
转载 记录一些那些让我糊里糊涂的HTTP、TCP、UDP、Socket(三)
转载自 https://www.cnblogs.com/lavenderone/archive/2011/10/14/2212523.html TCP,IP,HTTP,SOCKET区别和联系 网络由下往上分为: 对应 物理层–
2018-01-14 22:54:12
338
Unity对话系统源码
2017-12-03
Online Maps_2.5.16
2017-11-05
Easy Mobile
2017-10-31
Unity Vectrosity5.4绘制各种线条的实用工具
2017-06-29
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人