自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(72)
  • 资源 (2)
  • 收藏
  • 关注

原创 Unity合批处理

Unity合批处理

2023-03-10 09:00:22 1243 1

原创 Shader(代码篇之特效)

Shader(代码篇之特效)

2023-03-09 12:54:59 831

原创 Shader(代码篇之DOTA2)

Shader(代码篇之DOTA2)

2023-03-05 20:34:48 427

原创 Shader(代码篇之光照模型)

Shader(代码篇之光照模型)

2023-03-05 15:03:57 435 1

原创 Shader(杂项)

Shader(杂项)

2023-03-05 08:53:48 92

原创 Shader(光线追踪二)

Shader(光线追踪二)

2023-03-02 09:52:47 226 1

原创 Shader(光线追踪一)

Shader(光线追踪一)

2023-03-01 09:14:23 157

原创 Shader(曲线/曲面/阴影)

Shader(曲线/曲面/阴影)

2023-02-27 10:56:34 231

原创 Shader(着色)

Shader(着色)

2023-02-25 09:46:15 337

原创 shader(光栅化)

shader(光栅化)

2023-02-24 16:08:04 368

原创 Shader(MVP变换)

Shader(MVP变换)

2023-02-24 10:28:36 179

原创 Shader(齐次方程)

Shader(齐次方程)

2023-02-23 21:00:42 81

原创 Shader(矩阵)

Shader(矩阵)

2023-02-23 20:37:25 78

原创 Shader(向量)

Shader(向量)

2023-02-12 17:02:47 99

原创 UGUI优化

1.UI动静分离动”指的是元素移动,或者放大/缩小频率比较高的UI。“静”则是静止不动的UI,准确来说,是界面上不会移动、旋转、缩放、更换贴图和颜色的UI。UGUI系统是以Canvas为节点拆分动与静,把会动的UI元素放入专门为它们准备的合并用的画板上,再将静止不动的UI元素留在原来的画板上。这样一来,当会动的UI元素来回移动、旋转、缩放、改变贴图和颜色的时候,就不会再去重构那些静止部分的UI元素了。 动静分离后,CPU在重绘和合并时的消耗就大大降低了。2.拆分过重的UI有时一个Prefab

2022-02-18 14:07:16 1538

原创 UGUI的DrawCall和Rebuild

1.DrawCall的概念DrawCall是CPU调用图像编程接口,命令GPU进行渲染的操作。造成DrawCall过高的性能瓶颈其实是CPU而不是GPU。UGUI的合并原理是将相同的材质进行合并操作。因此UGUI减少DrawCall的方式是尽可能地进行动态合批。2.DrawCall的计算原理2.1.计算Depth(1)跳过不渲染的节点,如果处于渲染状态切没有任何其他相交的渲染元素,depth=0。(2)如果处于渲染状态切有其他元素相交则找到相交元素中最大的depth,判断能不能合批,

2022-02-18 11:39:01 2524

原创 解析ET6框架的数值组件

1.介绍在数值属性多,技能buff复杂且灵活性高的游戏,必须要有一套灵活的数值结构来搭配。 数值结构设计好了,实现技能系统就会非常简单,否则就是一场灾难。2.核心代码解析1.NumericType.cs增加人物属性字段 public enum NumericType { Max = 10000, Speed = 1000, SpeedBase = Speed * 10 + 1, SpeedAdd = Speed * 10 + 2, S

2022-01-26 14:00:20 1338

原创 解析ET6框架的ObjectWait组件

1.介绍ObjectWait组件用于等待,锁住方法继续执行直到收到返回通知。2.原理解析(ObjectWait.cs)1.ResultCallback返回IWaitType类型的ETTask public class ResultCallback<K>: IDestroyRun where K : struct, IWaitType { private ETTask<K> tcs;

2022-01-25 19:05:34 819

原创 基于ET6框架的多语言

1.介绍因为ET6的mono层没有像ET5实现一套excel的读取解析,所以我重新封装了一套多语言废除了编辑器部分,只有运行时有效。ET5的实现:Unity多语言(基于ET框架)_萧寒大大-CSDN博客https://blog.csdn.net/m0_46712616/article/details/121514161?spm=1001.2014.3001.5501ET6的实现:陈芬辉/ET - Gitee.comhttps://gitee.com/chen_fen_hui/ET/tree/

2022-01-15 19:06:13 554

原创 基于ET6框架的资源热更

1.介绍在游戏上线后,难免会有大大小小的bug需要修复以及版本迭代,如果要别人重新安装整包会流失大量的玩家,所以游戏实现资源热更是必不可少的,它能让玩家在打开游戏的时候花费少量时间就可以实现版本迭代。因为ET6框架没有提供资源热更方案,所以我基于ET6框架封装了资源热更模块,实现了一下功能:1.部署后一键打ab标签2.生成版本文件3.版本文件比对更新4.断点续传(玩家下载到一半退出,下次进入可以从断点继续下载)5.loading进度加载显示6.本地和模拟手机两种模式切换陈

2022-01-13 19:52:06 4343 7

原创 基于ET6框架的声音组件

1.介绍一个游戏有音乐和音效是必不可少的,游戏中的各种音乐和音效都会对玩家的情绪和心里状态产生影响,各种氛围的营造和游戏的新鲜感和真实感的体现都需要音效的帮助。以下是我基于ET6框架封装了声音组件。陈芬辉/ET - Gitee.comhttps://gitee.com/chen_fen_hui/ET/tree/ETPro6.0/2.部分代码解析(SoundComponent.cs) /// <summary> /// 播放背景音乐

2022-01-03 16:43:08 3057 1

原创 基于ET6框架的特效组件

1.介绍一个好的游戏多多少少都有许多酷炫的特效,所以我基于ET6框架封装了一个特效组件用来实例化和销毁特效。陈芬辉/ET - Gitee.comhttps://gitee.com/chen_fen_hui/ET/tree/ETPro6.0/2.核心代码解析1.UIEffectDefine.cs定义每个特效的参数 public class UIEffectClass { public string name; //名字 pu...

2021-12-31 17:12:49 820

原创 基于ET6框架的循环列表

1.介绍在做一次性加载同一种预制体多个时(如排行榜,背包等),循环列表必不可少,它能帮你大大降低卡顿和提高性能。以下是我封装的基于EUI的循环列表,个人觉得封装的还不错。如果使用有遇到bug或者还有什么新需求可以留言或者提交pr。陈芬辉/ET - Gitee.comhttps://gitee.com/chen_fen_hui/ET/tree/ETPro6.0/2.核心代码解析(DynamicInfinityList.cs) protected void UpdateRender()

2021-12-30 10:28:54 975

原创 ET6的UGUI框架的原理和使用(EUI之代码绑定)

1.介绍在开发UI的过程中,如果手动的去代码绑定组件既繁杂又耗时间,EUI提供了自动的代码绑定UI预制体的组件,使得开发效率大幅提升。GitHub - zzjfengqing/ET-EUI: 基于ET框架的UI模块基于ET框架的UI模块. Contribute to zzjfengqing/ET-EUI development by creating an account on GitHub.https://github.com/zzjfengqing/ET-EUI2.原理(UICodeSpa.

2021-12-21 17:24:43 1994

原创 解析ET6框架协程锁的原理和使用

1.介绍协程锁是异步编程时访问同一个变量,访问公共的资源(全局变量),就需要加锁,才能保证数据访问的安全。2.原理(CoroutineLockComponent.cs)1.Awake生成各种类型的协程锁队列添加到list里面 public override void Awake(CoroutineLockComponent self) { CoroutineLockComponent.Instance = self;

2021-12-14 20:00:52 3059

原创 解析ET6框架定时器的原理和使用

1.介绍在游戏逻辑编写中定时器是必不可少的,接下来我就来解析ET6框架的定时器的原理和使用。2.原理(TimerComponent.cs)1.awake将所有TimerAttribute的类型的类存入timerActions数组 public void Awake() { this.timerActions = new ITimer[TimeTypeMax]; //获取所有TimerAttribute.

2021-12-11 11:07:16 2200

原创 解析ET6框架的proto生成及优化

1.介绍protocol buffers 是一种语言无关、平台无关、可扩展的序列化结构数据的方法,它可用于(数据)通信协议、数据存储等。2.解析proto生成原理1.Proto2CS.cs将proto文件生成cs文件供c#使用 public static void Proto2CS() { msgOpcode.Clear(); //生成cs脚本 Proto2CS("ET", "..

2021-12-08 15:19:34 1013

原创 解析ET6框架的配置表的原理和使用

1.介绍在游戏开发中,为了方便策划程序分工合作,使用.xlsx配置表在所难免,接下来我就解析下ET6框架的配置表的原理和使用。2.原理1.ExcelExporter.cs导出.xlsx为模板类,并生成json然后动态编译成protobuf使用 public static void Export() { try { //读取bin目录下的Template.txt

2021-12-07 17:22:31 4326

原创 解析ET6框架Entity的生命周期

1.介绍1.LoadSystem:热重载时调用2.AwakeSystem:entity在Addcomponent/AddChild时调用3.DeserializeSystem:entity反序列话后调用4.UpdateSystem:同unity的Update一样每帧调用5.LateUpdateSystem:同unity的LateUpdate一样每帧调用(比Update晚)6.DestroySystem:entity触发Dispose时调用2.实现原理(以Awake/Updat

2021-12-06 11:37:59 1059

原创 解析ET6框架热重载的实现

1.介绍热重载是在 Editor 打开的状态下创建或编辑脚本并立即应用脚本行为的过程。无需重新启动应用程序和 Editor 即可使更改生效。更改并保存脚本时,Unity 会热重载所有当前加载的脚本数据。2.实现原理1.OperaComponentUpdateSystem.cs点击R重新装载Logic_.dl,Logic_pdb if (Input.GetKeyDown(KeyCode.R)) { //重新

2021-12-05 19:12:41 4154

原创 解析ET6的事件的使用

1.事件原理1.Entry.cs将所有反射类型添加到EventSystem中//将dll中的反射类型添加到EventSystem中Game.EventSystem.Add(CodeLoader.Instance.GetTypes());2.EventSystem.cs解析并处理所有EventAttribute标签的类存入allEvents字典,并使用publish分发事件public void Add(Type[] addTypes) {

2021-12-05 15:40:20 3378

原创 ET6运行指南(vs版)

1.安装环境1.下载Unity2020.3.0Unity最新版本下载-Unity稳定版本 | Unity中国官网下载Unity最新版本(Unity Tech Stream)和Unity稳定 (LTS) 版本。Tech Stream版可以访问正在开发的最新功能,而LTS版提供两年支持,具有更高的稳定性。——Unity版本、Unity软件下载、Unity许可证、Unity版本兼容、Unityhub下载。https://unity.cn/releases/full/20202.下载vs2022(安装.ne

2021-12-05 11:46:51 2980

原创 ILRuntime使用(c#及ILRuntime反射)

1.c#反射1.介绍反射是.NET中的重要机制,通过反射可以得到*.exe或*.dll等程序集内部的接口、类、方法、字段、属性、特性等信息,还可以动态创建出类型实例并执行其中的方法。2.通过反射获取类型//1.通过typeof获取某个值的类型System.Type stuType=typeof(Student);//2.通过一个对象获取该对象所对应的类的类型Student stu=new Student();System.Type type=stu.GetType();.

2021-12-02 19:25:29 1516

原创 ILRuntime使用(注册跨域委托)

1.Action//比如system.Action<int>appdomain.DelegateManager.RegisterMethodDelegate<int>();2.Func//比如system.Func<int,bool>appdomain.DelegateManager.RegisterFunctionDelegate<int,bool>();3.自定义委托/*比如public delegate void Tes.

2021-12-02 14:19:33 905

原创 ILRuntime使用(mono调用热更类方法)

1.调用静态方法 //调用无参数静态方法,appdomain.Invoke("类名", "方法名", 对象引用, 参数列表); appdomain.Invoke("HotFix_Project.InstanceClass", "StaticFunTest", null, null); //调用带参数的静态方法 appdomain.Invoke("HotFix_Project.InstanceClass", "StaticFunTest2",

2021-12-01 20:29:56 1224

原创 解析ET6接入ILRuntime实现热更

1.介绍ILRuntime项目为基于C#的平台(例如Unity)提供了一个纯C#实现,快速、方便且可靠的IL运行时,使得能够在不支持JIT的硬件环境(如iOS)能够实现代码的热更新。介绍 — ILRuntime (ourpalm.github.io)https://ourpalm.github.io/ILRuntime/public/v1/guide/index.htmlET是一个开源的游戏客户端(基于unity3d)服务端双端框架,服务端是使用C# .net core开发的分布式游戏服务端,其特点

2021-11-30 10:36:18 2003

原创 Unity多语言(基于ET框架)

1.介绍1.代码枚举加语言(编辑器加语言)2.一张Excle表配置所有语言3.静态文本加载(编辑模式下可根据key看到value,Default Language为value的语言和游戏中的Language不同)4.动态文本加载2.核心代码示例1.LocalizationService.csusing System;using System.Collections.Generic;using System.ComponentModel;using ...

2021-11-24 14:17:32 3442 2

原创 Unity编辑器拓展(GraphView制作对话系统编辑器)

1.介绍1.无限的分支和合并的对话能力。2.对话框、图形保存/加载系统。3.小地图,便于导航。4.有节点创建的搜索窗口。5.黑板填写属性值。6.用于分组节点的注释块。7.由Unity的嵌入式GraphView API支持。8.在压缩包中提供完整demo和代码注释。2.基础知识1.GraphViewExperimental.GraphView.GraphView - Unity 脚本 APIhttps://docs.unity.cn/cn/current/Scrip...

2021-11-22 14:26:24 4071

原创 UGUI特效层级和裁剪问题

1.介绍特效在游戏中是不可缺少的,拥有好看的特效可以让游戏锦上添花。但在添加特效的时候,会出现各种各样的问题,比如特效层级显示问题,scrollview穿透等等。2.特效显示优先级1.sortingOrder2.render Queue(同个sortingOrder下render Queue才生效)3.特效需要了解的组件1.canvas:需要勾选overrideSorting,然后填写order in layer 改变sortingOrder的值2.Image:在没...

2021-11-17 20:10:50 1946

原创 Unity坐标转换

世界坐标将游戏内的游戏空间理解为"世界",世界坐标系对等于游戏空间坐标系,游戏中的transform.position或者transform.rotation的信息都是基于世界坐标系。视口坐标视图坐标是对游戏显示视图的一个归一化的描述,其中左下角为(0,0),右上角为(0,1),在需要对显示视图进行分屏处理时,可以通过设置Camera上的ViewPort Rect属性来进行屏幕分屏渲染。屏幕坐标屏幕坐标是对屏幕像素(分辨率)的位置的描述,其中左下角为(0,0),右上角为(Scre

2021-11-16 19:39:24 1766 1

Unity对话系统编辑器

使用GrahicView,UIElement,Node等unity原生的API制作的对话系统编辑器,内附一个demo,代码注释齐全

2021-11-22

TopDown Engine 2.2.1.unitypackage

这是一款非常快速、紧密、移动友好、健壮和可扩展的引擎,以质量和游戏感觉为核心,开始通过Unity以自上自下的视角创建你自己的2D或3D游戏。它被设计作为各种自上而下的游戏,和任何游戏的相机定位在上面的动作。这是一个快速、易于生产、多功能、轻量级和易于扩展的解决方案,将帮助您为您的项目提供一个巨大的提升。

2021-10-10

空空如也

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

TA关注的人

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