本教程使用Unity 2020.3.0f1制作。
随机性可以让事情无法预测,多变并且显得自然。至于是真正的随机现象,还是由于观察者缺乏必要的信息或者理解而感知到的表象则并不重要。 因此,只要随机的方式并不是非常容易看出规律的话,我们就可以使用完全确定性的且完全不是随机的东西来展现给观察者。 这对于软件而言比较好,因为软件通常都是确定性的。 一些设计不良的多线程代码可能会导致竞态条件,从而导致不可预测的结果,但这仍然不是可靠的随机性来源。 真正可靠的随机性只能从通常不可用的外部来源来(例如采样大气噪声的硬件)获得。
真正的随机性通常是软件不希望的。 因为它生成的任何内容都是一次性事件,无法复制。 每次的结果将有所不同。 理想情况下,我们需要有一个过程可以针对任何特定输入产生唯一且固定的表现上的随机输出。 这就是哈希函数的作用。
在本教程中,我们将创建一个由小立方体组成的2D网格并将其用于可视化哈希函数。 和“Basics”系列中一样,我们从一个新项目开始。 由于需要使用jobs 系统,因此导入Burst包。 我还将使用URP,因此需要导入Universal RP并为其创建资产并配置Unity以便能够使用它。
我们将使用Job为网格中的所有立方体创建哈希值。 按照与基础知识系列中介绍的相同方法,创建一个具有此类工作的HashVisualization组件类型。 该Job将使用哈希填充NativeArray。 哈希值本质上是没有固有含义的bits集合。 我们给它们使用uint类型,因为它是最接近32位(四个字节)的通用数据类型。 最开始,我们先直接使用job的执行索引作为哈希值。