- 博客(45)
- 收藏
- 关注

原创 Xlua分析:Lua调用C#
在之前的博客中讲了有关lua和c#交互的比较浅层的概念,即C#侧注册[LuaCallCSharp]和[CSharpCallLua]的标签后,即可实现双侧沟通。但是还是没有讲明白里面的一些具体内容包括参数传递、xlua栈调用,甚至是C#如何调用lua都没研究。本篇主题是lua如何调用C#的补充。
2024-01-28 21:16:30
2931
1
原创 Unity Dots理论学习-5.与ECS相关的概念
DOTS的面向数据编程方式比你在MonoBehaviour项目中常见的面向对象编程方式更适合硬件开发。可以尝试理解一些与数据导向设计(DOD)相关的关键概念,以及这些概念如何影响你的代码,对你在MonoBehaviour项目中的C#编程通常是较少涉及的。
2025-02-10 22:42:27
1426
原创 Unity Dots理论学习-4.ECS有关的模块(3)
对于子场景中的每个GameObject,烘焙会创建一个实体,这些实体会被序列化为文件,而且当子场景运行时被加载时,这些实体会代替GameObject本身被加载。— 项目是一个快节奏的竞争性多人游戏,例如射击游戏,需要授权服务器和客户端预测,以提供良好的玩家体验(如上所述,这些功能在Netcode for Entities中得到了支持,但在Netcode for GameObjects中没有)。块中第一个实体的ID和组件存储在这些数组的索引0处,第二个实体存储在索引1,第三个实体存储在索引2,依此类推。
2025-02-10 21:31:44
1137
原创 Unity Dots理论学习-3.ECS有关的模块(2)
如前所述,Unity中的C#代码默认通过JIT(即时编译)编译器Mono编译;或通过AOT(提前编译)编译器IL2CPP编译以提供更好的运行时性能,在某些目标平台上也会有更好的支持。使用Burst可以大大提高并行计算的性能和可扩展性,正如以下图像所示:然而,需要注意的是,,因此许多传统的C#代码无法通过它编译。。正如在这段中所描述的,
2025-01-17 15:46:51
753
原创 Unity Dots理论学习-2.ECS有关的模块(1)
Unity的实体组件系统(ECS)是支撑DOTS模块和技术的面向数据架构。ECS为Unity中的内存数据和runtime进程调度提供了高度的控制和确定性。配备了两个兼容的物理引擎,一个高级的Netcode package,以及一个用来将大量ECS数据渲染到Unity的可编程渲染管线(SRP)、通用渲染管线(URP)和高清晰度渲染管线(HDRP)的渲染框架。这套ECS框架与GameObject数据兼容,允许你使用一些Unity 2022 LTS中尚未原生支持ECS的系统,如动画、导航、输入或地形。
2024-12-26 19:41:18
839
原创 Unity Dots理论学习-1.关于性能
也许你的游戏在高端PC上运行得很好,但在低端移动平台上,帧率是不是会慢很多,导致明显的卡顿?编译器可能无法进行有效优化;实际上,Unity开发者长期通过“对象池”(主要优点是高效地重复使用来自预分配池的对象,消除了频繁创建和销毁对象的需要)来缓解这个问题(尽管对象池的使用可以说违背了最初使用能自动垃圾回收的语言的目的)。但是,如果数据在内存中是不连续的分散存储,那么访问它将会导致大量的缓存未命中,进而需要从更慢的主存中获取。或者,你编写的C#代码可能占用了过多的CPU时间,导致游戏的现实模拟本身很慢。
2024-12-26 19:04:08
1172
原创 Unity镂空图像做法
现在要完成一个需求,即镂空中间部分的image,外围image可以定义颜色并可选屏蔽点击,而中间的image需要透明且可以穿透,必须不能屏蔽点击。
2024-04-29 21:25:17
1155
原创 Lua内存管理策略
传统的内存管理策略主要分为两种:引用计数,和垃圾回收。对于Lua这种轻量化语言而言,前者占据大内存的开销是极力避免的。因此Lua采取了垃圾回收的机制,这也是本篇文章的主题。
2024-02-17 12:17:38
1743
原创 Lua Table库
table 库由一些操作 table 的辅助函数组成。他的主要作用之一是对 Lua 中 array 的大小给出一个合理的解释。另外还提供了一些从 list 中插入删除元素的函数,以及对 array 元素排序函数。
2024-02-11 22:26:36
1344
原创 Lua Packages
Lua 并没有提供明确的机制来实现 packages。然而,我们通过语言提供的基本的机制很容易实现他。主要的思想是:像标准库一样,使用表来描述 package。
2024-02-11 21:08:50
1236
原创 Lua Global环境
Lua的全局变量实际上是用environment这个表来存储所有的全局变量,其优点就是简化了lua的内部实现,而且还能像其他类型的表一样去操作这个全局表。
2024-02-10 22:27:28
1342
原创 Lua metatable & metamethod
programming in lua》里有一个案例很详细,就是写一个集合类的table,其负责筛选出table中不重复的元素并组合成一个新的table。
2024-02-09 22:33:13
1115
原创 Lua序列化
我们经常需要序列化一些数据,为了将数据转换为字节流或者字符流,这样我们就可以保存到文件或者通过网络发送出去。我们可以在 Lua 代码中描述序列化的数据,在这种方式下,我们运行读取程序即可从代码中构造出保存的值。
2024-02-09 11:32:53
1491
原创 Lua编译与运行
lua会首先把代码编译成中间码然后执行,或许大家都有所困惑:它不是解释性语言吗?其实lua作为解释性语言的意义在于其能在运行过程中完成编译工作,正是dofile、loadfile、require这种函数的存在,lua才能顺理成章地称自己为“解释性语言”。
2024-02-07 13:27:09
1221
原创 C#hybridCLR热更新方案初探
暂时处于hybridCLR的初步研究状态,目前的框架使用还是尚少,本篇文章旨在同步给大家大概的使用流程和使用心得,在初步建立新项目时可以适当考虑。
2024-01-24 12:31:40
2010
原创 SpriteAtlas图集预览算法:MaxRectsBinPack
前段时间对unity spriteAtlas预览功能比较感兴趣,就去查询了一下unity是如何实现的。
2024-01-09 21:54:11
1760
3
原创 《游戏引擎架构》知识点合集-3.游戏软件工程基础
本篇博客旨在收集(第二版)书籍中每一章中重要的知识点,一方面供他人一起学习,另一方面可以让本人在之后能更快地温故知新。
2024-01-03 17:52:47
554
1
原创 《游戏引擎架构》知识点合集-1.导论
旨在收集(第二版)书籍中每一章中重要的知识点,一方面供他人一起学习,另一方面可以让本人在之后能更快地温故知新。
2024-01-01 23:06:20
545
原创 Lua与C#交互初析
自主了解Lua和C#交互的底层逻辑和实现原理,用以之后在lua测开发的时候做出良好的代码优化。项目采用xlua结构与c#端进行交互,在个别地方和其他类型的lua(比如和tolua的加载机制)不一样,但lua底层都是一致的。在此次分享中会有一些知识专属于xlua范围。
2023-12-19 11:02:16
2546
1
原创 帧同步Demo环境初步搭建
多人游戏同步相关知识点还是非常多的,以上还只是在低延迟的情况下,要确保玩家在不同网络条件下均能够正常游戏,还需要考虑到网络延迟和抖动,并使用恰当的插值和平移技术,以使得游戏状态在不同客户端上看起来尽量一致。之后对这个demo的扩充就是进一步帧同步。
2023-12-10 22:56:12
746
1
原创 《胡闹厨房》Demo制作体会
油管的《胡闹厨房》Demo更适合初学者,里面很多机制都是受益匪浅的。对于职场老将而言,可以跳过很多比较繁琐且之前早就学会的内容,取精华去糟粕,在教程这么做的时候可以深度思考它为什么会这么做,有助于想到更完美更舒适的解决方式。
2023-12-03 15:29:49
675
1
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人