Unity-Dots加载GameObject并转Entity的方法
Unity-Dots框架下GameObject转Entity的方法
前言
最近自己也在研究Unity-Dots框架,在此期间我就遇到了资源加载后将其转为Entity的问题。因此我写了这篇文章记录我现在的想法。我也想为新来研究Unity-Dots框架的朋友提供一些思路。Unity资源加载的方式有很多,但是这里我只说如何从Resources文件夹中加载GameObject。其实其他的加载方式也是一样,我们主要还是了解如何将加载出来的GameObject转为Unity-Dots框架下的Entity。
电脑环境信息:
Windows10版本
Unity2022.3.7f1c1
Dots框架版本1.0.16
全加载
全加载就是暴力的将Resources文件夹或是AB包中的所有GameObject对象转为Entity并保留下来。这个适合一些小型项目的开发。这个想法的确限制过多,但还是有坑点。所以我还是想记录一下。如果你看了描述也觉得这个方法不好,可以直接跳过这部分。
我们先做一些准备的工作,在项目的Asset ...
Journey
Journey
我已经忘记自己到底是什么时候购买的《Journey》。但是我想应该是2020年吧,那时候《原神》也才刚出不久,我从一篇关于《原神》的报道中看到这个游戏。落日之下,一个身披红袍的角色在沙漠中滑行。角色身旁光影交错勾织出一个如梦似幻的场景。我也就是在那个时候决定去玩这个游戏。直到现在2023.10.24,我才通关了这个游戏。一共运行时常2.2小时。
从2020-2023,我记得我一共玩过三次。第一次自然是刚刚购买游戏的时候,那时候我迫不及待地想要体验报道中的场景。当我打开界面的时候,我就感觉有些问题。这个游戏界面可以说是我遇到过最简洁的界面了。这简洁的界面让我觉得这就像是一个未完成的学生作业。但是我丝毫不怀疑这是一个很好的作品,毕竟Stream上的高分可不会骗人。而当我继续探索的时候,我就对Stream上的分数感觉到了怀疑。我不觉得这也能算是游戏吗?知道如何移动的我也就是漫无目的的在沙漠中走着。被我操作的角色在画面一蹦一跳,我不知道接下来要干什么。但是画面中的高山实在是过于惹眼,所以我不由生出要往高山方向走的想法。现在的我真的很佩服这样的 ...
关于Unity-Dots框架
关于Unity-Dots框架
前言
本文根据Unity官方提供的教程实践为基础来进行说明并添加一些我实践过程中的内容。如果你觉得看我文章浪费时间你可以去官方的教程下查看自行了解一下——官方教程连接(友情提醒:官方教程的Dots版本并没有到最新。至少在2023.9.17,我查看的时候教程Dots版本大概是在1.0.0)。
电脑环境信息:
Windows10版本
Unity2022.3.7f1c1
Dots框架版本1.0.16
环境搭建
Unity版本直接在UnityHub下下载,版本只要下载2022版本以上的长期支持版本就好了(越新的版本可支持的Dots框架版本越高)。接下来的操作你都可以在上面的教程中看到,我这里也只是复述。在进行Unity版本下载的时候,我们要将其URP的选项一起点上。如果你没有找到,后面你在创建空项目的时候再选择URP项目。接下来你只要等Unity自动下载好后再创建这个工程。
接下来我们打开,并在顶部的工具栏中按照以下的操作打开包管理器:Windows
=> Packa ...
Physically Based Rendering(渣翻)前言
Physically Based
Rendering(渣翻)前言
2023.10.16补充
在我网上冲浪的时候,我发现已经有人翻译过这本书了。以下是工程地址,所以我决定不在继续自讨没趣了。打开工程你看到的就只是一堆代码,如果你要PDF的话可以去Release下下载。如果你信不过这个译者,你可以对着英文原版看。我大概看了一下就知道这个翻译比我好太多了。所以我不在进行后面的翻译了。但是由于我自己还是写了一部分,这部分就保留在我的博客里吧,也算是我自己的一点私心。
关于翻译
因为我没有找到关于这本书的翻译那就只好自己来了。可是我英语并不怎么好,所以大部分是通过有道翻译进行翻译的。但是有些我个人感觉有问题的翻译会进行修改。当然这其中也有我改后变得不好的地方。如果有翻译的问题,请大家帮忙指出来。我在此谢谢大家了。Physically Based
Rendering: From Theory to Implementation
(pbr-book.org)的原文地址。前言部分没有什么关于渲染方面的知识点,大家可以跳过。我到是为了自己英语练习才从头看到尾 ...
最近的思考2023.10
最近的思考2023.10
最近的生活总是不令我愉快。说实话我都快忘记自己上次觉得生活愉快是什么时候了。所以我时常在思考一些事情。而这就是最近思考的总结。
不想跑,所以跑
我经常在刷句读(一个软件的名字)。最近我就刷到了这样的一句话——不想跑,所以跑(大概是这样的,具体的我不想再去找一遍)。初看这个句话的时候我确实感觉奇怪什么叫做不想跑,所以跑。后面我看到评论说明这个是村上春树这位作家说的(我并不是很喜欢这个作家,我读他的书总是感觉到莫名其妙的难受。我这并不是说他文笔不好,而我单纯觉得难受)。我看别人的分析大概意思是:对于难受的事情,我们总是会找理由逃避。但是对于一些不得不做的事情,我们不应该有这样不去做的想法。所以对于这样的事情,当我们有这个想法的时候那就去做它吧。
我记得这个例子一开始说关于跑步的事情。正好我最近也在跑步健身。虽然我也就是每天在出租屋下的小区跑一圈而已,但是我每天跑步还是会觉得很累。我也时常会想着要不今天就算了。其实我每次有这样的想法就真的算了。所以当我看到这样的话时,我还是有些触动的。对于现在的我而言,我面对着 ...
2023.9.3碎碎念
2023.9.3碎碎念
前言
我好久没有写文章了。最近发生了很多事情,当然距离我上次更新文章已经快一个月了。一个月的时间本来就会发生很多的事情。细细想来也是我要更新文章的时间了,之前我本来想着就是一个月一篇文章。不过我每次写文章都觉得很浪费时间,最近这样的感觉是越来越强烈。每次我都想着字斟句酌,但是实际写起来就是乱写一通。我写的任何一篇文章至少都要花费2小时的时间。我每次都会纠结于某些东西,包括这篇文章我也是纠结了半小时是否要写。毕竟我之前说了要稳定的写文章,现在又到了期限,而我好像有许多东西要写可仔细想想又都不好写。
所以最终我决定这篇文章还是随便写写就当是碎碎念好了。而且此后我也不会再逼迫自己写文章了。之前逼迫自己写文章是为了逼迫自己学习技术并分享。后面我发现我除了会当一个搬运怪外什么都不会。我文章下面的版权提示也是真的讽刺,我到现在也不知道hexo主题怎么把这东西去除掉。所以技术文章我都不想写,就算写了大概率也只是记录吧。比如对于某个问题,我直接贴上别人文章的地址方便自己以后再遇到的时候查看就是了。
碎碎念
不写技术文的原因
...
2023.8最近的总结
2023.8最近的总结
关于最近的文章产出
离我上次上传文章已经是今年6月份的事情了。这段时间内我并没有懈怠,这准确来说是对于学习而言。这主要是因为现在我所负责的项目对我而言太难了。因此对于我而言,我每天都在学习。当然对于写文章,我只坚持到了6月份底。
我之所以停止写文章的原因和我为什么不完成关于《Unity shade
入门精通》的理由一样。我现在所看的内容根本和我现在的工作内容不一致。书中说描述的很多东西,我都很难理解。与其一知半解然后写成读书笔记,还不如再多加深理解后再写下来。(虽然我前面所写的文章也有不清不楚的地方,但是我好歹理解了部分。)因此我打算先读完书能明白多少就明白多少,然后如果后面有空我就写关于它的读书笔记(其实我现在已经写了部分,但是大多就是照抄而已。毕竟原来的作者就写的很好了)。
所以大概关于技术的文章产出在短时间内是不可能了。大概率后面的文章都是描述我个人生活琐事了。
最近的工作
我加入这家公司也快两个月了。刚刚开始的时候,我的工作倒是轻松。因为我不用在乎过多的逻辑处理,我只需要一些部 ...
Unity-Shader读书笔记完结发言(16)
Unity-Shader读书笔记完结发言(16)
如果大家有买过《Unity
shader入门精要》这本书,那么你一定知道我现在读书笔记的进度并没有到书中的末尾。但我不想继续写下去了。书中剩下的文章有表面着色器,基于物理的渲染、Unity5更新了什么和还有更多内容吗(这个就是书中标题)。其实我如果还要再写下去,那么也就剩下两篇了(最后两篇完全真的没有什么做笔记的必要)。现在是2023.6.14日,我完全也有足够的时间在这个按照我的计划将这两篇读书笔记做完。但是我想现在停下来了。
如果你有好好看上篇文章,那么你一定会看到上篇文章我说过我大多是照抄原文。这个原因自然是我实践太少更本没有什么太多的思想,所以我只能照抄。我现在停下来的原因也差不多。对于表面着色器,作者写的本来就很精简了。如果我要做读书笔记最多是只是多加一些Unity官方文档上所说明的内容。而基于物理的渲染则是我现在知识积累实在太少了而作者剩下的篇幅也只能简单介绍。我个人认为对于这个我除照抄外只剩下一个选择——按照作者给的资料将作者未写完的补全。但我觉得我完全可以去买另一本介绍物理渲染的书籍 ...
Unity-Shader读书笔记(15)
Unity-Shader读书笔记(15)
这边文章大多是讲Unity中的渲染优化技术。
影响性能的因素
书中将影响性能的因素分成了三个方面:
(1)CPU 在CPU方面过多的Draw
Call、复杂的脚本和物理模拟都是消耗性能的原因。所谓Draw
Call就是CPU在每次通知GPU进行渲染之前,都需要提前准备好顶点数据(如位置、法线、颜色和纹理坐标等),然后调用一系列API把它们放到GPU可以访问到的指定位置,最后调用一个绘制指令。而在我们调用绘制指令的时候,就会产生一个Draw
Call。如果一帧中Draw Call数量的过多会导致CPU在调用Draw
Call上花费许多的时间。 (2)GPU
在GPU方面则为过多的顶点/片元(过多的片元可能是由于分辨率或是overdraw造成的)和过多的逐顶点/逐片元计算。
(3)带宽
在带宽方面,项目中使用了没有尺寸大但是没有压缩的纹理,或者存在分辨率过高的帧缓存。
书中提及的优化技术
(1)CPU优化,使用批处理技术来减少Draw Call的数目
(2)GPU优化。在减少需要处理的顶点 ...
Unity-Shader读书笔记(14)
Unity-Shader读书笔记(14)
消融效果
书中的消融效果是使用噪声纹理+透明度测试。我们使用对噪声纹理采样的结果和某个控制消融程度的阈值进行比较,小于阈值则使用clip函数进行裁剪。具体实现如下:
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156Shader "Learn/Dissol ...