【发布时间】:2018-10-31 17:50:17
【问题描述】:
我正在尝试创建一个函数,将 Unity 游戏中的每个资源数据转储到文件中,并且能够从当前加载的场景中转储屏幕上的视频、音频、脚本名称和图像。
当我尝试对纹理和矩阵、向量和 int 值和浮点数等着色器数据执行相同的操作时,我被卡住了。我知道我可以通过Material.GetXXX 函数获得这些阵型。
例如,我目前可以从标准着色器中获取主 Texture,该着色器具有名为 _MainTex 的纹理类型属性:
Material mat = gameObject.GetComponent<MeshRenderer>().material;
Texture mat1Tex = mat.GetTexture("_MainTex");
SaveTex(mat1Tex);
问题是我需要知道属性的名称和它的类型,例如纹理、矩阵、浮点数、颜色等,然后才能在运行时获取它们的值
我希望项目中有许多来自第三方来源的着色器,手动检查每个着色器、复制它们的属性名称和类型以便获取数据会很复杂。
有没有办法使用Material.GetXXX 函数获取着色器属性和检索其值所需的类型?如果这是不可能的,有没有办法单独转储着色器数据?
注意:
这不是一个保存功能,我不是在寻找保存和加载游戏状态的方法。这是一个用于对 Unity 游戏进行分析和故障排除的插件。
【问题讨论】:
-
我不是唯一一个对 Unity 有一些你不知道的事情感到惊讶的人。感觉这值得截图,或框架,或成就解锁奖......或其他东西;)
-
很惊讶你很惊讶。没有人知道一切。并且都在这个网站上向其他人学习。
-
没有。我很惊讶!我的电脑房里有一个底座。您的图标所在的位置。它说:像上帝一样的 Unity 用户,就在下面 ;)
-
@Confused Lol 谢谢