{!See https://docs.google.com/document/d/1takg_GmIBBKKTj-GHZCwzxohpQz7Bhekivkk72kYMtE/edit for reference implementation of OneTrust, dataLayer and GTM} {!OneTrust Cookies Consent} {!OneTrust Cookies Consent end} {!dataLayer initialization push} {!dataLayer initialization push end} {!Google Tag Manager} {!Google Tag Manager end} 프로퍼티 바인더 추가 | Visual Effect Graph | 10.8.0
docs.unity3d.com
"{0}"의 검색 결과

    목차 표시/숨기기
    초안: 이 페이지의 콘텐츠는 완성되었지만, 검토는 아직 거치지 않았습니다.
    # 프로퍼티 바인더

    프로퍼티 바인더는 Visual Effect 컴포넌트***를 사용하여 게임 오브젝트에 연결할 수 있는 C# 동작입니다. 이러한 동작을 사용하여 씬 또는 게임플레이 값과 이 시각 효과 인스턴스의 노출 프로퍼티 간에 연결할 수 있습니다.

    예를 들어 구체 바인더는 씬에 연결된 스피어 콜라이더의 값을 사용하여 구체 노출 프로퍼티의 포지션과 반지름을 자동으로 설정할 수 있습니다.

    프로퍼티 바인더 추가

    VFX 프로퍼티 바인더라는 일반적인 MonoBehaviour를 통해 프로퍼티 바인더를 추가할 수 있습니다. 이 동작을 통해 하나 이상의 프로퍼티 바인딩을 사용할 수 있습니다. 각 프로퍼티 바인딩은 노출 프로퍼티와 런타임 또는 씬 요소 간의 관계를 생성하는 역할을 담당합니다.

    또는 Add Component 메뉴를 통해 프로퍼티 바인더를 직접 추가할 수도 있습니다. VFX Property Binder 컴포넌트가 없을 때 생성됩니다.

    빌트인 프로퍼티 바인더

    비주얼 이펙트 그래프 패키지는 다음과 같은 빌트인 프로퍼티 바인더와 함께 제공됩니다.

    • 오디오
      • Audio Spectrum to AttributeMap: 오디오 스펙트럼을 속성 맵에 베이크하고, Texture2D 및 uint Count 프로퍼티에 바인딩합니다.
    • 게임 오브젝트
      • Enabled: 게임 오브젝트의 Enabled 플래그를 부울 프로퍼티에 바인딩합니다.
    • 포인트 캐시
      • Hierarchy to AttributeMap: Texture2Ds AttributeMaps 및 uint Count에 대한 트랜스폼 계층 구조의 타겟 포지션을 바인딩합니다.
      • Multiple Position Binder: 트랜스폼 리스트의 포지션을 Texture2D AttributeMap 및 uint Count에 바인딩합니다.
    • 입력
      • Axis: 입력 축의 플로트 값을 플로트 프로퍼티에 바인딩합니다.
      • Button: 버튼 누름 상태의 부울 값을 부울 프로퍼티에 바인딩합니다.
      • Key: 키보드 키 누름 상태의 부울 값을 부울 프로퍼티에 바인딩합니다.
      • Mouse: 마우스의 일반적인 값(포지션, 속도, 클릭)을 노출 프로퍼티에 바인딩합니다.
      • Touch: 터치 입력의 입력 값(포지션, 속도)을 노출 프로퍼티에 바인딩합니다.
    • 유틸리티
      • Light: 광원 프로퍼티(컬러, 밝기, 반지름)를 노출 프로퍼티에 바인딩합니다.
      • Plane: 평면 프로퍼티(포지션, 노멀)를 노출 프로퍼티에 바인딩합니다.
      • Terrain: 터레인 프로퍼티(크기, 하이트맵)를 노출 프로퍼티에 바인딩합니다.
    • 트랜스폼
      • Position: 게임 오브젝트 포지션을 벡터 노출 프로퍼티에 바인딩합니다.
      • Position (previous): 이전 게임 오브젝트 포지션을 벡터 노출 프로퍼티에 바인딩합니다.
      • Transform: 게임 오브젝트 트랜스폼을 트랜스폼 노출 프로퍼티에 바인딩합니다.
      • Velocity: 게임 오브젝트 속도를 벡터 노출 프로퍼티에 바인딩합니다.
    • 물리
      • Raycast: 물리 레이캐스트를 수행하고, 해당 결과 값(hasHit, 포지션, 노멀)을 노출 프로퍼티에 바인딩합니다.
    • 콜라이더
      • Sphere: 스피어 콜라이더의 프로퍼티를 구체 노출 프로퍼티에 바인딩합니다.
    • UI
      • Dropdown: 드롭다운의 인덱스를 uint 노출 프로퍼티에 바인딩합니다.
      • Slider: 플로트 슬라이더의 값을 uint 노출 프로퍼티에 바인딩합니다.
      • Toggle: 토글의 부울 값을 부울 노출 프로퍼티에 바인딩합니다.

    프로퍼티 바인더 작성

    프로젝트에 새 C# 클래스를 추가하고 UnityEngine.VFX.Utility.VFXBinderBase 클래스를 확장하여 프로퍼티 바인더를 작성할 수 있습니다.

    VFXBinderBase 클래스를 확장하려면 다음 메서드를 구현해야 합니다.

    • bool IsValid(VisualEffect component): 바인딩이 가능한지 검증하는 메서드입니다. VFX Property Binder 컴포넌트는 이 메서드가 true를 반환하는 경우에만 UpdateBinding()을 수행합니다. 바인딩 여부를 확인하려면 이 메서드에서 모든 검사를 구현해야 합니다.
    • void UpdateBinding(VisualEffect component): IsValid가 true를 반환하는 경우 바인딩을 적용하는 메서드입니다.

    예제 코드

    다음 예제에서는 플로트 프로퍼티 값을 현재 게임 오브젝트와 다른(타겟) 게임 오브젝트 사이의 거리로 설정하는 간단한 프로퍼티 바인더를 보여줍니다.

    using UnityEngine;
    using UnityEngine.VFX;
    using UnityEngine.VFX.Utility;
    
    // The VFXBinder Attribute will populate this class into the property binding's add menu.
    [VFXBinder("Transform/Distance")]
    // The class need to extend VFXBinderBase
    public class DistanceBinder : VFXBinderBase
    {
        // VFXPropertyBinding attributes enables the use of a specific
        // property drawer that populates the VisualEffect properties of a
        // certain type.
        [VFXPropertyBinding("System.Single")]
        public ExposedProperty distanceProperty;
    
        public Transform target;
    
        // The IsValid method need to perform the checks and return if the binding
        // can be achieved.
        public override bool IsValid(VisualEffect component)
        {
            return target != null && component.HasFloat(distanceProperty);
        }
    
        // The UpdateBinding method is the place where you perform the binding,
        // by assuming that it is valid. This method will be called only if
        // IsValid returned true.
        public override void UpdateBinding(VisualEffect component)
        {
            component.SetFloat(distanceProperty, Vector3.Distance(transform.position, target.position));
        }
    }```
    
    문서 개요
    맨 위로
    Copyright © 2023 Unity Technologies — 상표 및 이용약관
    • 법률정보
    • 개인정보처리방침
    • 쿠키
    • 내 개인정보 판매 금지
    • Your Privacy Choices (Cookie Settings)