1. 2018.4 A工程的预制体 拖到同版本的B工程 要【手动】设置一下 B工程里面对应的材质球
不然B工程 AB资源打包--->加载的时候 会出现材质球的Shader丢失,解决办法:不要在Start里面 在LateUpdate调用 一下 防止没有在对应时机调用到,实测 也适用于
SkeletonAnimation游戏物体对象打包AssetsBundle后 加载物体到场景 shader全紫色的问题
using System;
using System.Collections;
using System.Collections.Generic;
using Spine.Unity;
using UnityEngine;
using UnityEngine.UI;
public class ForHoratioFixBug : MonoBehaviour
{
public SkeletonAnimation skeletonAnim;
public Renderer[] meshSkinRenderer;
void Start()
{
skeletonAnim = gameObject.GetComponentInChildren<SkeletonAnimation>();
}
private void LateUpdate()
{
ShaderRecover(gameObject);
}
public void ShaderRecover(GameObject obj)
{
if (obj == null) return;
Image[] images = obj.GetComponentsInChildren<Image>(true);
for (int j = 0; j < images.Length; j++)
{
images[j].material.shader = Shader.Find(images[j].material.shader.name);
}
meshSkinRenderer = obj.GetComponentsInChildren<Renderer>(true);
for (int i = 0; i < meshSkinRenderer.Length; i++)
{ if (meshSkinRenderer[i].sharedMaterial == null)
{
continue;
}
meshSkinRenderer[i].sharedMaterial.shader = Shader.Find(meshSkinRenderer[i].sharedMaterial.shader.name);
}
}
}
附加: 让Unity导出APK或工程的时候强制绑定指定的Shader而不剔除,与 添加强制预加载的Shader