protected void BindMaterialDepend(List<MaterialAsset> _materialAssetList) { foreach (var materialAsset in _materialAssetList) { string matName = materialAsset.matName.ToLower(); if (!LoadCache.HasLoaded(matName, AssetType.material)) { Debug.Log(matName + "找不到"); continue; } MaterialRelationship rl = materialAsset.materialRelationship; Material mat = LoadCache.GetMaterial(matName);//materialAssetBundleRefDic[materialAsset.matName].mainAsset as Material; if (rl != null && mat.name.ToLower().Equals(rl.matName.ToLower())) { mat.shader = Shader.Find(rl.sdName);//GetShader(rl.sdName);//shaderAssetBundleRefDic[rl.sdName].mainAsset as Shader; foreach (var item in rl.propertyPairList) { ShaderPropertyType type = (ShaderPropertyType)item.type; switch (type) { case ShaderPropertyType.Color: mat.SetColor(item.propertyName, item.color); break; case ShaderPropertyType.Vector: mat.SetVector(item.propertyName, item.v4); break; case ShaderPropertyType.Float: case ShaderPropertyType.Range: mat.SetFloat(item.propertyName, item.value); break; case ShaderPropertyType.TexEnv: if (LoadCache.HasLoaded(item.texName, AssetType.texture)) { mat.SetTexture(item.propertyName, LoadCache.GetTexture(item.texName));//textureAssetBundleRefDic[item.texName].mainAsset as Texture); } break; default: break; } } } } }
public MaterialAsset(string _name, MaterialRelationship _materialRelationship) { matName = _name; materialRelationship = _materialRelationship; }