국가 선택/위치
Australia
Österreich
België
Canada
Canada - Français
中国
Česká republika
Denmark
Deutschland
France
HongKong
Iceland
Ireland
Italia
日本
Korea
Latvija
Lietuva
Lëtzebuerg
Malta
المملكة العربية السعودية (Arabic)
Nederland
New Zealand
Norge
Polska
Portugal
Russia
Saudi Arabia
Southeast Asia
España
Suisse
Suomi
Sverige
台灣
Ukraine
United Kingdom
United States
국가 선택/위치
België
Česká republika
Denmark
Iceland
Ireland
Italia
Latvija
Lietuva
Lëtzebuerg
Malta
Nederland
Norge
Polska
Portugal
España
Suisse
Suomi
Sverige

런타임에 컨트롤러 객체를 가져오려면 어떻게 해야 하나요?

WaveVRController Loader를 사용하여 런타임에 컨트롤러를 로드합니다. 따라서 컨트롤러 객체는 편집기에서 수정할 수 없습니다.

자산 > WaveVR > 추가 > GenericModel > 리소스 > 컨트롤러에서 Generic Controller Model 프리팹은 WaveVR 컨트롤러의 구조를 보여 줍니다.

프리팹에는 컨트롤러 모델, 컨트롤러 빔컨트롤러 포인터가 포함됩니다.

빔 및 포인터를 가져오는 방법을 알아보려면 컨트롤러 모델에서 빔 및 포인터 찾기(샘플 코드)로 이동하십시오.

컨트롤러 모델에서 빔 및 포인터 찾기(샘플 코드)

빔 및 포인터를 찾으려면 아래 단계를 따르십시오.
  1. 컨트롤러 인스턴스를 받으려면 CONTROLLER_MODEL_LOADED 브로드캐스트를 듣습니다.
  2. 컨트롤러의 모든 하위 항목을 찾습니다.
  3. 하위 항목에서 빔/포인터를 포함한 GameObject를 찾습니다.
    private GameObject dominantController = null, nonDominantController = null; void OnEnable() { WaveVR_Utils.Event.Listen (WaveVR_Utils.Event.CONTROLLER_MODEL_LOADED, OnControllerLoaded); }
    
    void OnControllerLoaded(params object[] args) { WaveVR_Controller.EDeviceType _type = (WaveVR_Controller.EDeviceType)args [0]; if (_type == WaveVR_Controller.EDeviceType.Dominant) { this.dominantController = (GameObject)args [1]; listControllerObjects(this.dominantController); } if (_type == WaveVR_Controller.EDeviceType.NonDominant) { this.nonDominantController = (GameObject)args [1]; listControllerObjects(this.nonDominantController); } }
    
    void OnDisable() { WaveVR_Utils.Event.Remove (WaveVR_Utils.Event.CONTROLLER_MODEL_LOADED, OnControllerLoaded); }
    
    private void listControllerObjects(GameObject ctrlr) { if (ctrlr == null) return;
    
        WaveVR_Beam _beam = null; WaveVR_ControllerPointer _pointer = null;
    
        // Get all children. GameObject[] _objects = new GameObject[ctrlr.transform.childCount]; for (int i = 0; i < ctrlr.transform.childCount; i++) _objects[i] = ctrlr.transform.GetChild (i).gameObject;
    
        // Find beam. for (int i = 0; i < _objects.Length; i++) { _beam = _objects [i].GetComponentInChildren<WaveVR_Beam> (); if (_beam != null) break; } if (_beam != null) Debug.Log ("‍Find beam: "‍ + _beam.name);
    
        // Find pointer. for (int i = 0; i < _objects.Length; i++) { _pointer = _objects [i].GetComponentInChildren<WaveVR_ControllerPointer> (); if (_pointer != null) break; } if (_pointer != null) Debug.Log ("‍Find pointer: "‍ + _pointer.name); }
제출
감사합니다! 귀하의 피드백은 다른 사람들이 가장 도움이 되는 정보를 보는 데 도움이 됩니다.