부하가 증가하지 않는 투명 버튼 만드는 법

3101 단어 uGUIUnity
  • Unity 버전
  • Unity 2017.3.1f1
  • 가져오기


    여러분, GUI로 투명한 버튼 만들까요?
    그럼 어떻게 할까요?
    일반적으로 버튼을 준비하여 Image에 대한 Colorα값 = 0 의 방법이죠.
    그러나 이런 방법을 사용하면 사실상 그리기에 부담이 된다.그림이 없는 것 같은데 Image 거예요.α 값이 =0인 경우에도 그려집니다.(α값 = 0의 Mesh가 남아 있어 드로잉 객체가 됨)

    Buton에서 Image를 사용할 때의 동작



    [Buton의 Image 열기α = 0으로 설정하기 전]

    [Buton의 Image 열기α = 0으로 설정한 후]
    Frame Debugger의 UGUI입니다.Rendering.RenderOverlays -> Canvas.RenderOverlays.DrawMesh는 버튼의 그리기 부분입니다
    Draw Mesh는 일반 디스플레이나 투명도 모두 발생합니다.
    어떻게 해야만 그림을 지우고 당첨 판정만 받을 수 있습니까?

    해결책


    Image의 후계자인 그래픽을 계승한 반을 창설했다.
    ClickDetector.cs
    public class ClickDetector : Graphic
    {
        protected override void OnPopulateMesh(VertexHelper vh)
        {
            // Base クラスで Mesh を生成しているので、override で Mesh を生成させないようにする。
            // Graphic はデフォルトで DoLegacyMeshGeneration() を呼ぶようになっており、
            // その中で OnPopulateMesh(Graphic.workerMesh) を実行している。
            // Graphic.workerMesh (= vh) にアクセスしてしまうと、Mesh が自動生成されるようになっている
    
            // Mesh が生成されると、Sprite が貼られていない Image のように、白い画像が出力されるのでどうにかしないといけない。
            // vh で mesh が必ず作られてしまうので、Clear を叩いて Mesh を削除する。
            vh.Clear();
        }
    }
    
    댓글에 적힌 상세한 말의 코드는 바로 여기에 있다.
    https://bitbucket.org/Unity-Technologies/ui/src/a3f89d5f7d145e4b6fa11cf9f2de768fea2c500f/UnityEngine.UI/UI/Core/Graphic.cs?at=2017.3&fileviewer=file-view-default#Graphic.cs-423
    Image 대신 여기에 만든 클릭 디텍터를 GameObject에 붙여주세요.

    Buton에 자체 제작된 "Click Detector"를 부착할 때의 동작



    [Buton의 GameObject Image를 Click Detector로 교체]
    Frame Debugger의 UGUI입니다.Rendering.RenderOverlays -> Canvas.RenderOverlays.DrawMesh가 없어졌어요.
    다 됐습니다.

    좋은 웹페이지 즐겨찾기