>  기사  >  백엔드 개발  >  Unity 3D에서는 셰이더 런타임 상태 및 렌더링 모드에서 발생하는 문제에 대해 간략하게 설명합니다.

Unity 3D에서는 셰이더 런타임 상태 및 렌더링 모드에서 발생하는 문제에 대해 간략하게 설명합니다.

little bottle
little bottle앞으로
2019-04-29 18:03:094249검색

Unity의 셰이더에는 다음과 같은 네 가지 렌더링 모드가 있습니다.

——Opaque(不透明)
——Cutout(镂空)
——Fade(隐现)
——Transparent(透明)

전에 특정 게임 개체에 정지 효과를 추가해야 했지만 내 셰이더
는 완전히 정지된 셰이더였으며 해당 색상 값은 변경할 수 없습니다. 매개변수를 통해 조정됩니다. 나중에 동료가 렌더링 모드를 수정하면 객체 자체의 Alpha 값을 변경할 수 있다고 말해주었기 때문에 첫 번째 단계는 다음과 같이 런타임 셰이더 렌더링 모드를 수정하는 코드를 인터넷에서 찾는 것이었습니다.
http://www.voidcn.com/article...
관련 튜토리얼:

C# 비디오 튜토리얼

그 다음에는 다음과 같은 간단한 코드 연산이 있습니다.

       //获取目标身上的渲染组件
       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 属性就可以实现了

사실 이 방법은 별로 좋지 않습니다. 주로 주어진 Shader가 속성 값을 수정할 수 없기 때문입니다. 나중에 속성 값을 변경할 수 있는 Shader를 얻었고 상황이 훨씬 간단해졌습니다.


Unity 3D에서는 셰이더 런타임 상태 및 렌더링 모드에서 발생하는 문제에 대해 간략하게 설명합니다.제가 얻은 머티리얼입니다. 머티리얼을 통해 머티리얼에 포함된 셰이더를 찾아보실 수 있으며, 각 값에 해당하는 매개변수도 보실 수 있습니다.

Unity 3D에서는 셰이더 런타임 상태 및 렌더링 모드에서 발생하는 문제에 대해 간략하게 설명합니다.이 경우에는 Material.SetFloat() 메소드와 유사한 메소드만 호출하면 됩니다. 괄호 안에는 두 개의

매개변수가 있는데, 이는 원하는 매개변수를 의미합니다. 2개는 변경된 값을 통해 변경됩니다.


이 기간 동안 문제가 발생했습니다. 오랫동안 검색한 결과 컴파일러에 문제가 있음을 발견했습니다. 첫 번째 방법을 사용할 때 정상이면

렌더링 모드를 수정할 수 있었고, 세 가지 색상을 순차적으로 사용하여 교체하면 그라데이션 효과를 얻을 수 있지만

계층 패널에서 이 개체를 선택하면 변경 중인 개체가 갑자기 변경 전 기본 상태로 돌아가거나
해당 개체를 미리 선택하는 경우 동일한 효과는 이 게임 개체를 컴파일 상태에서 선택할 수 없고 해당 렌더링 상태를 Inspector 패널에서 볼 수 없다는 것입니다. 마지막으로 이를 설명하는 런타임 렌더링 단어를 생각해 냈습니다. 동작,
실행 중인 경우 게임 개체 Shader의 렌더링 모드가 변경된 경우 렌더링 모드를 확인하면 렌더링 모드 속성이 재설정됩니다.



위 내용은 Unity 3D에서는 셰이더 런타임 상태 및 렌더링 모드에서 발생하는 문제에 대해 간략하게 설명합니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 segmentfault.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제