Unity의 셰이더에는 다음과 같은 네 가지 렌더링 모드가 있습니다.
——Opaque(不透明) ——Cutout(镂空) ——Fade(隐现) ——Transparent(透明)
전에 특정 게임 개체에 정지 효과를 추가해야 했지만 내 셰이더
는 완전히 정지된 셰이더였으며 해당 색상 값은 변경할 수 없습니다. 매개변수를 통해 조정됩니다. 나중에 동료가 렌더링 모드를 수정하면 객체 자체의 Alpha 값을 변경할 수 있다고 말해주었기 때문에 첫 번째 단계는 다음과 같이 런타임 셰이더 렌더링 모드를 수정하는 코드를 인터넷에서 찾는 것이었습니다.
http://www.voidcn.com/article...
관련 튜토리얼:
그 다음에는 다음과 같은 간단한 코드 연산이 있습니다.
//获取目标身上的渲染组件 var renderer = GetComponentsInChildren<renderer>(); // 建立一个冰冻数组 第二个数组元素是事先找好的冰冻特效 Material[] frostMatetials = new Material[2] { renderer.material, frostEffect }; //添加冰冻特效到人物身上的数组中 renderer.materials = frostMatetials; //实例化一个渲染模式变量 var fadeMode = SetMaterialRenderingMode.RenderingMode.Fade; //根据网上的方法更改你的 Shader 渲染模式为 Fade SetMaterialRenderingMode.SetMaterialRenderingModeMethod( renderer.materials[0],fadeMode);</renderer>
Color의 Alpha 값은 읽기 전용이고 수정이 불가능하지만 Color는 수정이 가능하므로 대상
객체 Color의 RGB 값을 가져온 다음 Color를 인스턴스화하고 생성자를 사용하여 변경해야 합니다. 원하는 알파 값으로 설정합니다.Color currentcolor03 = new Color { a = 0.8f, r = renderer.materials[0].color.r, g = renderer.materials[0].color.g, b = renderer.materials[0].color.b }; //替换目标 Color 属性就可以实现了
제가 얻은 머티리얼입니다. 머티리얼을 통해 머티리얼에 포함된 셰이더를 찾아보실 수 있으며, 각 값에 해당하는 매개변수도 보실 수 있습니다.
이 경우에는 Material.SetFloat() 메소드와 유사한 메소드만 호출하면 됩니다. 괄호 안에는 두 개의
매개변수가 있는데, 이는 원하는 매개변수를 의미합니다. 2개는 변경된 값을 통해 변경됩니다.
이 기간 동안 문제가 발생했습니다. 오랫동안 검색한 결과 컴파일러에 문제가 있음을 발견했습니다. 첫 번째 방법을 사용할 때 정상이면
계층 패널에서 이 개체를 선택하면 변경 중인 개체가 갑자기 변경 전 기본 상태로 돌아가거나
해당 개체를 미리 선택하는 경우 동일한 효과는 이 게임 개체를 컴파일 상태에서 선택할 수 없고 해당 렌더링 상태를 Inspector 패널에서 볼 수 없다는 것입니다. 마지막으로 이를 설명하는 런타임 렌더링 단어를 생각해 냈습니다. 동작,
실행 중인 경우 게임 개체 Shader의 렌더링 모드가 변경된 경우 렌더링 모드를 확인하면 렌더링 모드 속성이 재설정됩니다.
위 내용은 Unity 3D에서는 셰이더 런타임 상태 및 렌더링 모드에서 발생하는 문제에 대해 간략하게 설명합니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!