• Pvr_ControllerModuleInit代码分析


     1 using System;
     2 using UnityEngine;
     3 using System.Collections;
     4 using Pvr_UnitySDKAPI;
     5 
     6 
     7 namespace Pvr_UnitySDKAPI
     8 {
     9     public enum ControllerVariety//定义枚举类型的控制种类变量
    10     {
    11         Controller0,
    12         Controller1,
    13     }
    14 }   
    15 
    16 public class Pvr_ControllerModuleInit : MonoBehaviour
    17 {
    18     
    19     public ControllerVariety Variety;
    20     public bool IsCustomModel = false;//是否是定制的模型
    21     [SerializeField]
    22     private GameObject dot;//游戏对象-点
    23     [SerializeField]
    24     private GameObject rayLine;//游戏对象射线
    25     [SerializeField]
    26     private GameObject controller;//邮箱对象控制器
    27     private int controllerDof = -1;
    28     private int mainHand = 0;
    29     private bool moduleState = true; //模块状态
    30 
    31     void Awake()
    32     {
    33         Pvr_ControllerManager.PvrServiceStartSuccessEvent += ServiceStartSuccess;
    34         Pvr_ControllerManager.SetControllerAbilityEvent += CheckControllerStateOfAbility;
    35         Pvr_ControllerManager.ControllerStatusChangeEvent += CheckControllerStateForGoblin;
    36     }
    37     void OnDestroy()
    38     {
    39         Pvr_ControllerManager.PvrServiceStartSuccessEvent -= ServiceStartSuccess;
    40         Pvr_ControllerManager.SetControllerAbilityEvent -= CheckControllerStateOfAbility;
    41         Pvr_ControllerManager.ControllerStatusChangeEvent -= CheckControllerStateForGoblin;
    42     }
    43 
    44     private void ServiceStartSuccess()
    45     {
    46         mainHand = Controller.UPvr_GetMainHandNess();//设置主手柄
    47         if (Variety == ControllerVariety.Controller0)
    48         {
    49             StartCoroutine(ShowAndHideRay(mainHand == 0 && Pvr_ControllerManager.controllerlink.controller0Connected));
    50             
    51         }
    52         if (Variety == ControllerVariety.Controller1)
    53         {
    54             StartCoroutine(ShowAndHideRay(mainHand == 1 && Pvr_ControllerManager.controllerlink.controller1Connected));
    55         }
    56     }
    57 
    58     private void CheckControllerStateForGoblin(string state)
    59     {
    60         if (Variety == ControllerVariety.Controller0)
    61         {
    62             StartCoroutine(ShowAndHideRay(Convert.ToBoolean(Convert.ToInt16(state))));
    63         }
    64     }
    65 
    66     private void CheckControllerStateOfAbility(string data)
    67     {
    68         mainHand = Controller.UPvr_GetMainHandNess();
    69         if (Variety == ControllerVariety.Controller0)
    70         {
    71             StartCoroutine(ShowAndHideRay(mainHand == 0 && Pvr_ControllerManager.controllerlink.controller0Connected));
    72 
    73         }
    74         if (Variety == ControllerVariety.Controller1)
    75         {
    76             StartCoroutine(ShowAndHideRay(mainHand == 1 && Pvr_ControllerManager.controllerlink.controller1Connected));
    77         }
    78     }
    79     
    80     private IEnumerator ShowAndHideRay(bool state)
    81     {
    82         yield return null;
    83         yield return null;
    84         if (moduleState)
    85         {
    86             dot.SetActive(state);
    87             rayLine.SetActive(state);
    88         }
    89     }
    90 
    91     public void ForceHideOrShow(bool state)
    92     {
    93         dot.SetActive(state);
    94         rayLine.SetActive(state);
    95         controller.SetActive(state);
    96         moduleState = state;
    97     }
    98 }
  • 相关阅读:
    整理Eclipse常用快捷键
    前端网站资源推荐
    Node.js 官方示例中的 ECMAScript 2015
    D3.js 入门系列 — 选择元素和绑定数据
    D3.js 入门系列
    PlaceHolder的两种实现方式
    Vue.js 是什么
    Webstorm官方最新版本for Mac版本 不用注册码/破坏原文件
    vue.js 学习 仅自己加强记忆
    jQuery 动画animate,显示隐藏,淡入淡出,下拉切换,过渡效果
  • 原文地址:https://www.cnblogs.com/krystalstar/p/9643789.html
Copyright © 2020-2023  润新知