CodeBug

写代码,玩游戏

为什么要学 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
阅读全文 »

免费的图床有很多,比如说 sm.ms、微博图床、七牛云,这几个图床在个人微博中用的是比较多的。虽然它们都是免费的,但是有很多限制,网上看到的资料说是后面两个托管的图片地址可能会变化,这对于个人博客来说就很要命了。有一次灵光一闪,既然 GitHub 上可以托管博客,那么博客图片能不能也托管到 GitHub 呢?百度一下,果然有人这么做。然后,我也尝试了一下使用 GitHub 作为个人博客的图床,以下是用 GitHub 搭建图床的过程以及遇到的问题。 为什么要选择 GitHub 作为博客图床? 1. 免费无限制。GitHub 的公共仓库是免费的,没有广告,没有流量限制也不产生流量费用,没有图片
阅读全文 »
0%