Open RouderSky opened 1 year ago
我看了下,变体收集没有收集到材质TerrainMat 是不是没有收集到的变体就一定没有被打包?
我发现把这个prefab拉到被打包的场景中可以收集到变体,这是为啥 但是打包后,这个场景还是看不到这个地形
你先参照常见问题来解决
找到凶手了,开了Terrain的Draw Instance打包后就没法显示
你先参照常见问题来解决
该issue可以长期开着
还是有问题,打包后,地形是能看到了,但是地形上的法线效果没有了 我看layer中引用的normal图还在的,就是没效果,估计还是shader问题
看下变种是不是没有收集到。
收集到了,材质也在,shader也在、纹理也在,就是渲染效果不对,很迷
问题:真机上的模型或材质球显示效果不对 确认是否收集过着色器变种,并且SVC文件参与打包。 尝试关闭Project Settings -> Player页面 Optimization栏的Optimize Mesh Data选项。 如果Unity3D是2020.3以上的版本,尝试使用SBP构建(可编程构建管线)。 确认着色器使用特性被测试真机硬件支持。 确认渲染组件代码未被引擎裁剪。 如果是粒子特效显示问题,请检测关联Mesh是否开启了可读写。 如果是光照贴图错误,请检测相关设置。 从错误日志或警告日志里找到蛛丝马迹。
尝试关闭Project Settings -> Player页面 Optimization栏的Optimize Mesh Data选项。 是不是顶点数据被优化掉了。可以关闭下
唯一能怀疑的只有 确认着色器使用特性被测试真机硬件支持。 确认渲染组件代码未被引擎裁剪。
我在首包场景放了一个一模一样的terrain,打包出来法线效果是对的 也就是说是yooasset打包的场景有问题
我可以提供最小复现场景
这样配置应该没问题吧
我可以提供最小复现场景
进QQ群
我做了下面测试:
也就是说目前只有将地形直接放到首包场景进行打包的效果才是对的
所以我目前暂时先用2方案拿到正确的材质,进到游戏场景之后将游戏场景中的地形材质都替换掉,这样打包后就能看到法线效果了
我也遇到了地形渲染不出来的bug 请问解决了么
找到凶手了,开了Terrain的Draw Instance打包后就没法显示
你先参照常见问题来解决
Draw Instance 关了之后确实就可以了,这是Unity的Bug还是YooAssets的?
應該是YooAsset 1.5.7 的Bug,換成Addressable之後問題就解決了
應該是YooAsset 1.5.7 的Bug,換成Addressable之後問題就解決了
你把材质球和模型打包到一起,试一试。
在做变体收集时,会自动创建一个场景,那个场景有什么用的
在做变体收集时,会自动创建一个场景,那个场景有什么用的
常见是用来做照射用的,里面会有一个主相机和一个方向光。
應該是YooAsset 1.5.7 的Bug,換成Addressable之後問題就解決了
你把材质球和模型打包到一起,试一试。
试过了 地形还是无法显示
提供一个最小示例工程,打开后在编辑器下 所有地形都能加载正确渲染;打包后勾选了draw instanced的Terrain都渲染不出来 下载之后把z01, z02, z03的.zip删掉
TestYooAsset.z01.zip TestYooAsset.z02.zip TestYooAsset.z03.zip TestYooAsset.zip
同样的问题在text mesh pro中也遇到了,打包后字体很小的情况下,底部是灰的渲染效果不对 我的文本UI明明参与了打包,但是感觉变体收集不对 我还是通过老办法解决,把文本UI挂到首场景,然unity自己打包收集,进游戏后 用 首场景的文本UI中的字体文件 替换 所有的文本UI的字体文件
@RouderSky @gmhevinci 我在 windows 平台上也复现了该问题,在Editor上加载bundle无法显示地面,如果选中 Terrain,重新应用 Shader 可以恢复。感觉是打包后 Shader 的引用丢失了?
在unity2021.3.32f1版本里,我复现了该问题。纯手工打包并没有使用YOOAsset。
AssetBundleBuild[] assetBundleBuilds = new AssetBundleBuild[3];
assetBundleBuilds[0] = new AssetBundleBuild();
assetBundleBuilds[0].assetBundleName = "scene.ab";
assetBundleBuilds[0].assetNames = new string[] { "Assets/Scene/Grass.unity" };
assetBundleBuilds[1] = new AssetBundleBuild();
assetBundleBuilds[1].assetBundleName = "mat.ab";
assetBundleBuilds[1].assetNames = new string[] { "Assets/Matrial/instance.mat" };
assetBundleBuilds[2] = new AssetBundleBuild();
assetBundleBuilds[2].assetBundleName = "shader.ab";
assetBundleBuilds[2].assetNames = new string[] { "Assets/Shaders/InstanceShader.shader", "Assets/Shaders/InstanceShaderSVC.shadervariants" };
以上构建结构,如果使用内置构建管线后会出现DrawInstance失效的问题。查看shader.ab文件观察到SVC文件里缺少Instance变种,其实我们的SVC文件里配置的对应的变种。
然后修改构建管线为SBP,一切恢复了正常。猜测是内置构建管线的BUG。 所以在unity2021版本开始,推荐使用SBP构建管线。
unity2022.3 lts版本里,地形法线如果失效,可以尝试把YOO在资源收集界面的auto collect shader选项关闭。
我有一个prefab,参与打包,prefab里有一个GO,GO上有一个Terrain组件,Terrain组件中用到一个材质TerrainMat,材质TerrainMat使用CusTerrainLit shader 打包后,我打印log来看,材质是存在的,但是地形完全透明,看不到 我可以确定地形是被正确创建了,因为碰撞体存在 在editor下是正常的
unity版本是2021.3.30f1