public override void OnInspectorGUI() { base.OnInspectorGUI(); GUILayout.Label("-- Helper -------------------------"); MaterialAnimHelper helper = target as MaterialAnimHelper; EditorGUI.BeginChangeCheck(); helper.mat = EditorGUILayout.ObjectField("Material", helper.mat, typeof(Material), false) as Material; OnGUI_ShaderProps(); if (EditorGUI.EndChangeCheck()) { helper.UpdateAnim(); EditorUtility.SetDirty(helper); } }
void OnGUI_ShaderProps() { MaterialAnimHelper helper = target as MaterialAnimHelper; if (helper == null) { return; } var mat = helper.mat; if (mat == null) { return; } var shader = mat.shader; if (shader == null) { return; } var propCount = ShaderUtil.GetPropertyCount(shader); if (propCount < 1) { return; } Dictionary <string, ShaderPropInfo> props = new Dictionary <string, ShaderPropInfo>(); List <string> propNames = new List <string>(); propNames.Add("None"); for (int i = 0; i < propCount; i++) { var propType = ShaderUtil.GetPropertyType(shader, i); if (propType == ShaderUtil.ShaderPropertyType.TexEnv) { continue; } var propName = ShaderUtil.GetPropertyName(shader, i); propNames.Add(propName); props.Add(propName, new ShaderPropInfo() { index = i, type = propType } ); } if (props.Count < 1) { return; } //prop1 OnGUI_HelperPropInfo(shader, ref helper.propName1, ref helper.param1, ref helper.propType1, propNames, props, "Prop1"); //prop2 OnGUI_HelperPropInfo(shader, ref helper.propName2, ref helper.param2, ref helper.propType2, propNames, props, "Prop2"); //prop3 OnGUI_HelperPropInfo(shader, ref helper.propName3, ref helper.param3, ref helper.propType3, propNames, props, "Prop3"); //prop4 OnGUI_HelperPropInfo(shader, ref helper.propName4, ref helper.param4, ref helper.propType4, propNames, props, "Prop4"); //prop5 OnGUI_HelperPropInfo(shader, ref helper.propName5, ref helper.param5, ref helper.propType5, propNames, props, "Prop5"); helper.InitShaderProp(); }