Lua重要知识点总结
前言本篇文章主讲三个方面:Lua的性质,Lua的基础理论和重要知识点。尝试言简意赅的呈现各个模块的知识点,并且把一些平时开发可能不会注意到的地方呈现出来。 Lua的性质Lua的设计目的Lua是一种轻量小巧的脚本语言,用标准C语言编写并以源代码形式开放,从一开始就把轻量化,可移植性,可嵌入型,可扩展性等作为自己的设计目标,作为胶水语言来辅助像是C,C++这样的主角来更好地完成工作。 特性轻量型非常小的尺寸,5.1版本的压缩包仅有208KB,解压后也不过是835KB,Lua解释器只有17000多行的C代码,编译后二级制库文件仅有143KB。 可移植性使用clean C...
2024年度总结
前言“写一篇年终总结”,去年虽已有了这个想法,一旦下笔虽是思绪万千却不知所语。今年阅历和见识兴许也增加了几分,加上博客也算是搭建起来了,怀揣着过往的遗憾,历经的回忆,自我的审视以及未来的期待,想着在此写下2024的总结。 技术今年作为一名UI仔主要还是对UI方面业务逻辑和性能优化的研究和拓展,以及对GF部分功能模块的一个研究总结(更新ing)。将写笔记位置从Notion也逐步转移到博客上面,尝试用向别人解释的角度去阐述自己想要表达的知识点,这种感觉要“麻烦”很多,主要体现在两个方面: 表达的方式。因为在写的时候要不断地从自己和读者的视角来回切换,并且注意自己的表达方式不要让人产生误解。是否把简单的东西讲的冗余了呢,是否把该详尽的东西给省略了呢,在时间和精力受限的情况下能否把我想表达的东西表达清楚呢以及我了解到的和我想要表的东西是否存在错误的地方呢,这些都需要进行考虑。从目前的结果上回过头来审视一下自己,只能说缺乏经验以及还有很大进步空间。 研究的深度。“把复杂的事情说明白了,才能融会贯通,才能提高档次,不然我把代码给GPT转出来一个也是文章”...
UGUI基础理论和性能优化
前言这里将从讨论UGUI的基础理论,并从中得到可能影响性能的因素并针对这些因素进行优化这三个方面展开。 UGUI基础这里将讲述简单说明几个基础知识要点。核心内容来自Unity官方文档,翻译参考了花卷。 Canvas基本功能逻辑 Canvas被Unity渲染系统用于渲染几何体在游戏世界空间中。负责把它包含的Mesh(网格)合成批处理(合批),生成适当的渲染命令(Draw Call)并将它们发送到 Unity 的图形系统。这个过程称为ReBatch(重建批次)或者Batch Build(批处理构建)。当前Canvas被标记为包含需要Rebatch的几何体时候,该Canvas会被标记为Dirty。 Canvas中几何体数据的通过Canvas Renderer组件进行传递。 父Canvas和其子Canvas除了父Canvas的改变导致子Canvas的大小发生变化的情况,不同的Canvas之间是互不影响的。 Graphic基本功能逻辑Graphic类是 Unity UI C# 库提供的基类(Base Class)。它是所有为 Canvas 系统提供可绘制几何图形的 Unity UI...
GameFramework解析:资源(Resource)
前言资源这个模块有太多太多的东西,一开始我也想过把这个模块完完整整的去做一下详解,把每一个小模块都拿出来说一下,但这玩意要写的话,能说的地方和能讲的拓展实在太多了,以及伴随着工作上事情的越来越多,这个文章应该会逐步采用逐步更新的方式。 先来看一下GF官方的说明: 为了保证玩家的体验,我们不推荐再使用同步的方式加载资源,由于 Game Framework 自身使用了一套完整的异步加载资源体系,因此只提供了异步加载资源的接口。不论简单的数据表、本地化字典,还是复杂的实体、场景、界面,我们都将使用异步加载。同时,Game Framework 提供了默认的内存管理策略(当然,你也可以定义自己的内存管理策略)。多数情况下,在使用 GameObject 的过程中,你甚至可以不需要自行进行 Instantiate 或者是 Destroy...
GameFramework解析:数据表(DataTable)
前言曾经听过这样一个故事,貌似在某个项目,某位程序大拿在项目中引入的导表工具不支持策划在Excel表中写入任何的中文,自然每张表中就没有策划任何的中文注释,程序的使用也是见招拆招,最终形成了一道天然的“防护壁垒”。最后拍拍屁股走人,可谓前人栽树后人遭殃,直到后面得遇高人,才使得配表这个功能幽而复明,回到正轨。开个玩笑,让我们进入正题。游戏开发中数据表是策划控制游戏各项功能实际运行的重要工具,是连接策划和程序的桥梁。它存储和管理者游戏中的各种数据,通过改表就可以对游戏中的各项数据和功能进行修改,提高了游戏设计和功能的可拓展性和灵活性。来看一下官方的定义: 可以将游戏数据以表格(如 Microsoft Excel)的形式进行配置后,使用此模块使用这些数据表。数据表的格式是可以自定义的。 导表流程这里的导表可以分为两个阶段来说,一是生成数据表DR类,二是读取数据表里面的数据并提供给其他模块使用。 生成数据表DR类 接下来就其几个流程进行单独的说明。 GenerateDataTables:点击Unity自定义选项中的”Generate...
GameFramework解析:全局配置(Config)
GF里面的全局配置并不是指的一般意义上的数据表,全局配置表的格式不能随便自定义,它的格式必须与当前的ConfigHelper里面写定的解析格式保持一致
GameFramework解析:事件(Event)
前言事件模块是游戏中很重要的一个模块,而GameFramework的事件模块在网上能找到很多文章,但基本都是讲解其应用方面的,并没有对其源码进行分析。这里阐述此模块通过如下三个方面:基本的类内信息说明,GF里面存储管理事件的形式,事件抛出和取消订阅的冲突问题。这里就不用应用举例了,有需要可以查看下面参考文档。 Event模块结构 从上面的结构图也可以看出,EventManager作为事件模块的管理器,其作用主要是对于EventPool的功能进行封装,并提供对应的接口给外部使用。因此本模块的核心逻辑主要在EventPool中。 EventPool作为事件模块的核心, EventPool处理着事件的发布、订阅、移除等功能的同时也会严格检查事件订阅的匹配情况,不允许出现重复订阅,也不允许出现重复取消订阅或取消订阅尚未订阅的事件处理函数,如果出现这些情况,将会抛出异常。观察者模式可以从“发布者”和“订阅者”两个角度来看,EventPool里面对应的两个方面便是 “事件” 和 “事件处理函数”...
C#:委托与事件
前言因为接下来想要整理一下游戏里面的事件模块,而当前项目的业务开发都是通过 Lua 进行的,有一阵子没有写 C#了,回想 C#的委托和事件,有些细节一时模糊了起来,所以打算干脆把相关的知识点整理一下,就当做复习了。 委托什么是委托无论是委托还是事件官网都没有一个简单直白的定义,只能说理解万岁。 委托:用于封装方法的一种引用类型,类似于 C++的指针,但其类型安全可靠。通过封装多个方法到一个变量中,调用此变量就可以调用所有绑定的方法。你也可以将它理解性地看做“方法的容器”。 委托的写法12345678910111213141516171819202122232425/// ---- 普通写法------// 1.定义委托类型,这一步定义的是委托的类型,并不是委托的实例public delegate void MyEventHandler();//2.定义委托变量public MyEventHandler MyEvent;//泛式委托public delegate void MyEventHandler<in T1, in T2>(T1 arg1, T2...
兴趣使然地开通了自己的博客
随着一个念头的油然而生,此个人博客也被孕育而出。 目的 创建一个能自我表达的地方。不知数年过去,想到此番此景又会有何感悟。 记录并分享学习到的知识点。本人之前的笔记基本上是写在 Notion 上的,笔风相当随意,以自我理解为主要目的。查找资料的时候会看到各种各样的文章和写法,有的大佬的文章对于知识点研究之深,拆解之详细且通俗易懂,让人直呼牛逼,恍然大悟之余也会对所有愿意分享的人心生感谢。倘若自己也能效仿尽一份力,锻炼自己表达能力的同时,也能帮助到他人,则是不胜荣幸。 博客的搭建本博客使用 Hexo...