Shader에서 표시하는 속성을 Toggle에서 On, Off [Unity]
7750 단어 UnityEditorShaderUnity
속성
표시하고 싶은 프로퍼티에는 이름의 머리에 "_SubTex"라고 붙입니다.
Properties
{
[PerRendererData] _MainTex ("Sprite Texture", 2D) = "white" {}
...
// SubTexture
[Toggle(USE_SUB_TEXTURE)] _UseSubTexture ("Use SubTexture", Float) = 0
_SubTex("Sub Texture", 2D) = "white"{}
[Header(Blend)]
[KeywordEnum(Add, Mix)]
_SubTexBlend("Blend", Float) = 0
_SubTexBlendIntensity("Intensity", Range(0,1)) = 1
}
에디터
using System.Collections;
using System.Collections.Generic;
using UnityEditor;
public class TSpritesEffectEditor : ShaderGUI {
public override void OnGUI (MaterialEditor materialEditor, MaterialProperty[] properties)
{
var subTexToggle = ShaderGUI.FindProperty ("_UseSubTexture", properties);
TShaderGUIUtils.DrawProperties (subTexToggle, "_SubTex", materialEditor, properties);
}
}
포인트
Properties
{
[PerRendererData] _MainTex ("Sprite Texture", 2D) = "white" {}
...
// SubTexture
[Toggle(USE_SUB_TEXTURE)] _UseSubTexture ("Use SubTexture", Float) = 0
_SubTex("Sub Texture", 2D) = "white"{}
[Header(Blend)]
[KeywordEnum(Add, Mix)]
_SubTexBlend("Blend", Float) = 0
_SubTexBlendIntensity("Intensity", Range(0,1)) = 1
}
using System.Collections;
using System.Collections.Generic;
using UnityEditor;
public class TSpritesEffectEditor : ShaderGUI {
public override void OnGUI (MaterialEditor materialEditor, MaterialProperty[] properties)
{
var subTexToggle = ShaderGUI.FindProperty ("_UseSubTexture", properties);
TShaderGUIUtils.DrawProperties (subTexToggle, "_SubTex", materialEditor, properties);
}
}
포인트
Util
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEditor;
using System.Linq;
public static class TShaderGUIUtils {
/// <summary>
/// Toggleで表示するUIを切り替える
/// </summary>
public static void DrawProperties(MaterialProperty toggle, string keyword, MaterialEditor materialEditor, MaterialProperty[] properties){
materialEditor.ShaderProperty (toggle, toggle.displayName);
if (toggle.floatValue == 1f) {
var subTexProps = properties
.Where (x => x.name.Contains (keyword))
.Where (x => x.name != toggle.name);
foreach (var prop in subTexProps) {
materialEditor.ShaderProperty (prop, prop.displayName);
}
}
}
}
프로퍼티로부터 대상의 UI를 검색해 표시하고 있습니다.
참고
MaterialEditor는 Old와 같습니다.
Reference
이 문제에 관하여(Shader에서 표시하는 속성을 Toggle에서 On, Off [Unity]), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/Teach/items/00ad3fbd5235aee314b2
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEditor;
using System.Linq;
public static class TShaderGUIUtils {
/// <summary>
/// Toggleで表示するUIを切り替える
/// </summary>
public static void DrawProperties(MaterialProperty toggle, string keyword, MaterialEditor materialEditor, MaterialProperty[] properties){
materialEditor.ShaderProperty (toggle, toggle.displayName);
if (toggle.floatValue == 1f) {
var subTexProps = properties
.Where (x => x.name.Contains (keyword))
.Where (x => x.name != toggle.name);
foreach (var prop in subTexProps) {
materialEditor.ShaderProperty (prop, prop.displayName);
}
}
}
}
MaterialEditor는 Old와 같습니다.
Reference
이 문제에 관하여(Shader에서 표시하는 속성을 Toggle에서 On, Off [Unity]), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/Teach/items/00ad3fbd5235aee314b2텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)