Browse Tag by C#

roguelike地牢生成算法

引言 文章作者:Mike Anderson 随机生成的地图是 Roguelike 类游戏最独特的一点,它让游戏变得很有乐趣,因为玩家永远要面对新的挑战。 但是随机地图却不是那么容易生成的

使用柏林噪声算法生成地图

柏林噪声是一个非常强大算法,经常用于程序生成随机内容,在游戏和其他像电影等多媒体领域广泛应用。算法发明者Ken Perlin也因此算法获得奥斯卡科技成果奖(靠算法拿奥斯卡也是没谁了666)。本文将剖析他于2002年发表的[改进版柏林噪声算法](http://mrl.nyu.edu/~perlin/noise/

C#枚举中使用Flags特性

假如有类型 Show 的定义如下 十進位表示法 [Flags] enum Days { None = 0, // 0000 0000 Sunday = 1, // 0000 0001 Monday = 2, // 0000 0010 Tuesday = 4, // 0000 0100 Wednesday = 8,

.NET Core/Framework 创建委托以大幅度提高反射调用的性能

都知道反射伤性能,但不得不反射的时候又怎么办呢?当真的被问题逼迫的时候还是能找到解决办法的。 为反射得到的方法创建一个委托,此后调用此委托将能够提高近乎直接调用方法本身的性能。(当然 Emit 也能够帮助我们显著提升性能,不过直接得到可以调用的委托不是更加方便吗?) 性能对比数据 ![性能对比数据](https://cdn.jsdelivr.net/gh/

UNITY JOB SYSTEM详解

创建Job 创建Job需要定义一个结构体,实现IJob接口。实现了IJob接口之后,就可以让这个Job和其他Job并行运行了。 到这呢,就可以给Job一个真正的定义了:Job是一个统称,任何实现了IJob接口的结构体,都可以成为一个Job。 创建Job的步骤如下: 1、创建一个实现IJob接口的结构体 2、给结构体添加所需的成员变量,可以使用blittable类型或者

堆栈内存Stack和堆内存Heap

堆与栈:有什么不同? 栈,或多或少负责跟踪正在程序中运行的代码。 堆,或多或少负责跟踪程序对象或数据。 栈,把它想像成叠在一起的盒子(像搭积木一样)。每一次调用一个方法就会在最上面叠一个盒子,用来跟踪程序运行情况。我们只能使用栈中叠在最上面的盒子里的东西。当某一最上面的盒子里的代码执行完毕(如方法执行完成),就把它扔掉并继续去使用下一个盒子。 堆,与栈类似,只是它是用

UNITY性能优化流程

资源检查 首先第一部分.我们要注意在平时工作中需要注意哪些地方养成一套流程规范.避免出现已经被总结出来的问题 代码 Unity 的垃圾收集(使用 Boehm GC 算法)是非分代的,也是非压缩的。“非分代”意味着 GC 在执行每遍收集时必须扫描整个堆,因此随着堆的扩