当前位置:   article > 正文

Unity骚操作:解决SpriteRenderer材质球的Shader丢失 问题 Spine物体打包AssetsBundle后加载出现材质丢失的问题_如何修复unity模型材质球

如何修复unity模型材质球

1. 2018.4  A工程的预制体 拖到同版本的B工程 要【手动】设置一下 B工程里面对应的材质球

        不然B工程 AB资源打包--->加载的时候 会出现材质球的Shader丢失,解决办法:不要在Start里面 在LateUpdate调用 一下 防止没有在对应时机调用到,实测 也适用于

SkeletonAnimation游戏物体对象打包AssetsBundle后 加载物体到场景 shader全紫色的问题

  1. using System;
  2. using System.Collections;
  3. using System.Collections.Generic;
  4. using Spine.Unity;
  5. using UnityEngine;
  6. using UnityEngine.UI;
  7. public class ForHoratioFixBug : MonoBehaviour
  8. {
  9. public SkeletonAnimation skeletonAnim;
  10. public Renderer[] meshSkinRenderer;
  11. void Start()
  12. {
  13. skeletonAnim = gameObject.GetComponentInChildren<SkeletonAnimation>();
  14. }
  15. private void LateUpdate()
  16. {
  17. ShaderRecover(gameObject);
  18. }
  19. public void ShaderRecover(GameObject obj)
  20. {
  21. if (obj == null) return;
  22. Image[] images = obj.GetComponentsInChildren<Image>(true);
  23. for (int j = 0; j < images.Length; j++)
  24. {
  25. images[j].material.shader = Shader.Find(images[j].material.shader.name);
  26. }
  27. meshSkinRenderer = obj.GetComponentsInChildren<Renderer>(true);
  28. for (int i = 0; i < meshSkinRenderer.Length; i++)
  29. { if (meshSkinRenderer[i].sharedMaterial == null)
  30. {
  31. continue;
  32. }
  33. meshSkinRenderer[i].sharedMaterial.shader = Shader.Find(meshSkinRenderer[i].sharedMaterial.shader.name);
  34. }
  35. }
  36. }

附加: 让Unity导出APK或工程的时候强制绑定指定的Shader而不剔除,与 添加强制预加载的Shader

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/在线问答5/article/detail/981979
推荐阅读
相关标签
  

闽ICP备14008679号