Пример #1
0
    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;
                    }
                }
            }
        }
    }
Пример #2
0
 public MaterialAsset(string _name, MaterialRelationship _materialRelationship)
 {
     matName = _name;
     materialRelationship = _materialRelationship;
 }