CodeBug

写代码,玩游戏

Lua Serialization Lua Serialization 是一种轻量级的序列化工具,用于将 C# 对象序列化成 Lua 代码。它可以帮助你将 C# 中的实例对象保存为 Lua 代码形式的配置文件,方便在 Lua 环境中使用。这对于在 Unity3D + Lua 的游戏开发工作流中非常有用。 特点 1. 支持将 C# 对象序列化成 Lua 代码。 2. 支持多种数据类型的导出,包括基本类型(int、float、double、bool、string、enum、array),以及复杂类型如 List 和 Dictionary。 3. 支持忽略某些字段的导出。 4. 支持序列化
阅读全文 »

为什么要学 DOTS ? DOTS 代表了 Unity 的未来。Unity 的架构正在朝着全面采用 DOTS 的方向发展。面向数据的设计(DoD)堪称是实时3D 行业的未来。利用 DoD 原理和实现来解决问题并开发复杂的解决方案已成为大势所趋,尤其是在游戏领域。 例如,瑞典游戏工作室 Far North Entertainment 就使用了 DOTS 来解决他们的性能问题,相关说明见 “Creating a third-person zombie shooter with DOTS”(使用DOTS创建第三人称僵尸扫荡游戏)。 还有国内公司海彼游戏研运的《蛋壳特攻队》,就是使用的 Unity D
阅读全文 »

遇到的问题 项目中有个预制体里面包含了 SpriteRender、Spine 的 MeshRenderer ,以及粒子系统特效。需求是要求游戏里的这个预制体对象在某一种状态下半透明。使用 MaterialPropertyBlock 修改预制体对象中的一个 Sprite 的材质颜色时,该对象直接变成了全白显示。 产生问题的原因 Sprite 的着色器中的 _Color 属性使用了 [PerRendererData] 标签。因为 Unity 在内部使用 MaterialPropertyBlock 进行 Sprite 渲染,所以使用 MaterialPropertyBlock 发送一些 [PerR
阅读全文 »

Rider 常用快捷键 编辑 * Ctrl + /注释 * Shift + F6 重命名 * Ctrl + Y 删除一行 * Ctrl + Alt + Left/Right 返回上次编辑位置 * Ctrl + Alt + L 格式化代码 * Ctrl + D 复制当前行 * Shift + Alt + Up 将行往上移动 * Ctrl + W区域选择 查找 * Ctrl + F 在当前文件查找 * Ctrl + Shift + F 全局查找 * Ctrl + N 全局查找类 * Ctrl + Shift + N 全局查找代码文件 * Ctrl + R 查找并替换
阅读全文 »

for VS. foreach 老版本的 Unity (测试用的是 Unity 5.0.2f1) foreach 是有大概 40B 的 GC,所以,项目重遍历 IList、ArrayList 和 Dictionary 时都不要用 foreach。 使用 for 替代,或者使用如下写法: * List 的非 foreach 遍历 1 2 3 4 5 List data = new List(); var e = data.GetEnumerator(); while(e.MoveNext())
阅读全文 »

虚方法和抽象方法的区别 * 抽象方法在抽象类中定义,并且没有方法体,要求派生的非抽象子类必须重写抽象方法。 * 虚方法在抽象类和非抽象类中都可以定义,有默认方法体,派生子类可以使用 override 关键字覆盖父类虚方法,但也可以不重写父类的虚方法。 * Difference between virtual and abstract methods [duplicate] 抽象类和接口的区别 主要区别 * 抽象类中可以包含抽象方法和其他方法,接口中只能包含抽象方法。 * 一个类只能继承一个抽象类,但是可以实现多个接口。 * 抽象类和接口都不能实例化。 * 抽象类可以有构造函数,
阅读全文 »

一、界面制作 1. 在UI界面中,用Canvas还是用RectTransform做根节点更好?哪种方法效率更高? Canvas划分是个很大的话题。简单来说,因为一个Canvas下的所有UI元素都是合在一个Mesh中的,过大的Mesh在更新时开销很大,所以一般建议每个较复杂的UI界面,都自成一个Canvas(可以是子Canvas),在UI界面很复杂时,甚至要划分更多的子Canvas。同时还要注意动态元素和静态元素的分离,因为动态元素会导致Canvas的mesh的更新。最后,Canvas又不能细分的太多,因为会导致Draw Call的上升。 2. Scro
阅读全文 »

问题描述 如果个人博客使用的是 Hexo 框架,分类和标签遇到特殊情况可能会链接不正确,比如说博客分类或者标签里面有 C# 的话,生成博客网站后,点击 C# 分类或者标签后,发现并没有正常显示 C# 相关的文章,而且 C++ 也有类似的问题。产生这个问题的原因是 Hexo 在生成博客后,每个标签会单独生成一个文件夹,而文件夹名称里面不能包含一些非法字符,同时网页地址里面也不能包含 # 等非法字符。 解决方案 在 Hexo 默认的 _config.yml 文件中,定义了两个空的映射属性:category_map 和 tag_map。只需要在这两个属性下面设置合法的映射就能解决问题。下面是我的映
阅读全文 »

Unity ECS 提供了一种更好的游戏设计方法,使开发者专注于正在解决的实际问题:组成游戏的数据和行为。它利用 C#Job System 和 Burst Compiler 使应用程序能够充分利用当今的多核处理器。从面向对象的设计转向面向数据的设计使开发者可以更轻松地重用代码,并使其他人更容易理解和处理代码。 ECS 优点 * 编写极高性能的代码 (Extremely performant code) * 更易于阅读的代码 (Easier to read) * 更易于代码重用 (Easier to reuse code) * Burst 编译器 (Burst compiler) *
阅读全文 »

一些基础知识点介绍 1. 数据类型 * double(双精度类型),一般64bit * float(浮点数类型),一般是32bit,如float2, float3, float4 * half(半精度类型),一般是16bit。用于几何位置或纹理坐标。 * fixed(定点数类型),一般是11bit。精度更低。一般用于颜色。 * vec(向量值类型), 如vec2, vec3, vec4 2. 常见方法 * tex2D(sampler2D, TEXCOORD0) * length(f
阅读全文 »
0%