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 }

转载于:https://www.cnblogs.com/krystalstar/p/9643789.html

Pvr_ControllerModuleInit代码分析相关推荐

  1. 20145236《网络攻防》Exp4 恶意代码分析

    20145236<网络攻防>Exp4 恶意代码分析 一.基础问题回答 如果在工作中怀疑一台主机上有恶意代码,但只是猜想,所有想监控下系统一天天的到底在干些什么.请设计下你想监控的操作有哪些 ...

  2. C#中类的继承 override virtual new的作用以及代码分析

    继承中override virtual new的作用 virtual 父类中需要注明允许重写的方法: override 子类中必须显示声明该方法是重写的父类中的方法: new 子类中忽略父类的已存在的 ...

  3. 2017.4.18 静态代码分析工具sonarqube+sonar-runner的安装配置及使用

    配置成功后的代码分析页面: 可以看到对复杂度.语法使用.重复度等等都做了分析,具体到了每一个方法和每一句代码. 四种使用方式: sonarqube + sonar-runner sonarqube + ...

  4. lighttpd1.4.18代码分析

    lighttpd1.4.18代码分析(八)--状态机(2)CON_STATE_READ状态 posted @ 2008-09-24 10:50 那谁 阅读(2225) | 评论 (1)  编辑 lig ...

  5. Device Tree(三):代码分析

    2019独角兽企业重金招聘Python工程师标准>>> 一.前言 Device Tree总共有三篇,分别是: 1.为何要引入Device Tree,这个机制是用来解决什么问题的?(请 ...

  6. 使用Hadoop和ELK进行业务代码分析!分分钟捉到Bug!

    大数据是计算领域的新高地,它有望提供一种方法来应对二十一世纪不断增长的数据生成.越来越多的大数据爱好者正在涌现,越来越多的公司正在采用各种大数据平台,并希望提出以客户为中心的解决方案,帮助他们在竞争激 ...

  7. 20145328 《网络对抗技术》恶意代码分析

    20145328 <网络对抗技术>恶意代码分析 ------看到这句话说明还没写完-------- 实践内容: 使用schtasks指令监控系统运行 使用sysmon工具监控系统运行 使用 ...

  8. starGAN原理代码分析

    下载: git clone https://github.com/yunjey/StarGAN.git 1 cd StarGAN/ 1 下载celebA训练数据: bash download.sh 1 ...

  9. tensorflow笔记:多层CNN代码分析

    tensorflow笔记系列:  (一) tensorflow笔记:流程,概念和简单代码注释  (二) tensorflow笔记:多层CNN代码分析  (三) tensorflow笔记:多层LSTM代 ...

  10. ARM裸机篇---启动代码分析

    ARM裸机篇---启动代码分析 先搞清楚启动代码和Bootloader的区别,启动代码是指CPU复位后到进入C语言的main函数之前需要执行的那段汇编代码. 下面的代码先暂且这样吧,没啥注释的,时间关 ...

最新文章

  1. tree类型题目需要用到的头文件tree.h
  2. java泛型的实现和原理_java 泛型实现原理
  3. oracle rman 架构图,图解Oracle RMAN备份入门
  4. 视频直播点播nginx-rtmp开发手册中文版
  5. C语言试题七十三之请编写函数求两个数的最大公约数
  6. 计算机软件著作权奖励资金绩效目标,专项资金项目绩效目标表.pdf
  7. python爬虫入门实战---------一周天气预报爬取_Python爬虫入门实战--------一周天气预报爬取【转载】【没有分析...
  8. mysql sqlserver firstrow=2_将CSV文件导入SQLServer
  9. 关于慢开始、拥塞控制、快重传、快恢复算法的理解
  10. !DOCTYPE html 到底是什么意思?
  11. Python—Pytest+Allure定制报告
  12. 什么是SSL安全证书
  13. 计算机系统导论实验教程第二版,清华大学出版社-图书详情-《大学计算机基础实验教程(第2版)》...
  14. C#控件之OpenFileDialog选择图片文件并在picturebox里面显示
  15. 【windows10】使用pytorch版本deeplabv3+训练自己数据集
  16. 深度学习模型压缩与优化方法
  17. 为什么重写equals()就要重写hashCode()
  18. maven的配置流程
  19. Java基础(22)-Java反射总览(把反射基本了解一遍)
  20. EXCEl按16进制递增

热门文章

  1. 3. 项目立项三板斧-建议书-可行性研究-评估论证
  2. mysql创建软连接_18.4.2 建立MySQL的软链接
  3. python微博情感分析,Python情感分析:鹿晗的粉丝们究竟原谅他了吗?
  4. 怎么下载高清无水印的视频号作品?视频号下载要用什么工具?1分钟解决微信视频号下载
  5. 郑捷《机器学习算法原理与编程实践》学习笔记(第二章 中文文本分类(二)—朴素贝叶斯算法)...
  6. 无代码生产新模式探索
  7. 5G技术—5G网络架构及关键技术详述测试题目
  8. 云笔记+心情日记类APP推荐
  9. 使用Kotlin+JetPack 从零开发自己的日记App
  10. ffmpeg4.x支持的编解码器等相关信息一览表