Unity 3d转2d再转3d
2017-12-20 17:42
253 查看
我是用daydream平台测试的,目前别的平台还没有测试
大概思路是playerSettings 中设置勾选Virtual Reality Supported 后选着对应的平台这里选的是Daydream
然后在转换平台时用下面的方法加载到对应的平台,
UnityEngine.XR.XRSettings.LoadDeviceByName("None")
UnityEngine.XR.XRSettings.LoadDeviceByName("daydream");
并设置UnityEngine.XR.XRSettings.enabled = true;就可以切换到vr模式了
在同一个场景中增加两个MainCamera,
下面把脚本附上
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.EventSystems;
using UnityEngine.XR;
public class Manger3dTo2d : MonoBehaviour
{
private bool is3d = true;
public GameObject canvas;
public GameObject mainCamare;
public GameObject camare;
//public GameObject evenSystem;
public TextMesh tm;
//public GameObject hand;
// Use this for initialization
void Start ()
{
tm.text = XRSettings.loadedDeviceName;
Debug.Log(XRSettings.loadedDeviceName + "333");
is3d = true;
canvas.SetActive(false);
camare.SetActive(false);
}
// Update is called once per frame
void Update () {
if ((GvrControllerInput.AppButtonUp || Input.GetKeyUp(KeyCode.A)) && is3d)
{
canvas.SetActive(true);
is3d = false;
//UnityEngine.XR.XRSettings.enabled = false;
XRSettings.LoadDeviceByName("None");
Debug.Log(XRSettings.loadedDeviceName);
tm.text = XRSettings.loadedDeviceName;
//evenSystem.GetComponent<GvrPointerInputModule>().enabled = false;
//evenSystem.GetComponent<StandaloneInputModule>().enabled = true;
mainCamare.SetActive(false);
camare.SetActive(true);
//hand.SetActive(false);
}
if (GvrControllerInput.ClickButtonDown || Input.GetKeyUp(KeyCode.B))
{
To3d();
}
}
public void To3d()
{
StartCoroutine(VrOn());
}
IEnumerator VrOn()
{
XRSettings.LoadDeviceByName("daydream");
Debug.Log
4000
(XRSettings.loadedDeviceName + "1111");
#if UNITY_EDITOR
#endif
#if UNITY_ANDROID
yield return new WaitUntil(() => XRSettings.loadedDeviceName == "daydream");//到这一步pc不能测试了
#endif
Debug.Log(XRSettings.loadedDeviceName + "222");
yield return null;
XRSettings.enabled = true;
Debug.Log(XRSettings.loadedDeviceName);
tm.text = XRSettings.loadedDeviceName;
canvas.SetActive(false);
is3d = true;
mainCamare.SetActive(true);
camare.SetActive(false);
//hand.SetActive(true);
//evenSystem.GetComponent<GvrPointerInputModule>().enabled = true;
//evenSystem.GetComponent<StandaloneInputModule>().enabled = false;
}
public void ButtonClick()
{
Debug.Log("这是2d场景");
}
}
大概思路是playerSettings 中设置勾选Virtual Reality Supported 后选着对应的平台这里选的是Daydream
然后在转换平台时用下面的方法加载到对应的平台,
UnityEngine.XR.XRSettings.LoadDeviceByName("None")
UnityEngine.XR.XRSettings.LoadDeviceByName("daydream");
并设置UnityEngine.XR.XRSettings.enabled = true;就可以切换到vr模式了
在同一个场景中增加两个MainCamera,
下面把脚本附上
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.EventSystems;
using UnityEngine.XR;
public class Manger3dTo2d : MonoBehaviour
{
private bool is3d = true;
public GameObject canvas;
public GameObject mainCamare;
public GameObject camare;
//public GameObject evenSystem;
public TextMesh tm;
//public GameObject hand;
// Use this for initialization
void Start ()
{
tm.text = XRSettings.loadedDeviceName;
Debug.Log(XRSettings.loadedDeviceName + "333");
is3d = true;
canvas.SetActive(false);
camare.SetActive(false);
}
// Update is called once per frame
void Update () {
if ((GvrControllerInput.AppButtonUp || Input.GetKeyUp(KeyCode.A)) && is3d)
{
canvas.SetActive(true);
is3d = false;
//UnityEngine.XR.XRSettings.enabled = false;
XRSettings.LoadDeviceByName("None");
Debug.Log(XRSettings.loadedDeviceName);
tm.text = XRSettings.loadedDeviceName;
//evenSystem.GetComponent<GvrPointerInputModule>().enabled = false;
//evenSystem.GetComponent<StandaloneInputModule>().enabled = true;
mainCamare.SetActive(false);
camare.SetActive(true);
//hand.SetActive(false);
}
if (GvrControllerInput.ClickButtonDown || Input.GetKeyUp(KeyCode.B))
{
To3d();
}
}
public void To3d()
{
StartCoroutine(VrOn());
}
IEnumerator VrOn()
{
XRSettings.LoadDeviceByName("daydream");
Debug.Log
4000
(XRSettings.loadedDeviceName + "1111");
#if UNITY_EDITOR
#endif
#if UNITY_ANDROID
yield return new WaitUntil(() => XRSettings.loadedDeviceName == "daydream");//到这一步pc不能测试了
#endif
Debug.Log(XRSettings.loadedDeviceName + "222");
yield return null;
XRSettings.enabled = true;
Debug.Log(XRSettings.loadedDeviceName);
tm.text = XRSettings.loadedDeviceName;
canvas.SetActive(false);
is3d = true;
mainCamare.SetActive(true);
camare.SetActive(false);
//hand.SetActive(true);
//evenSystem.GetComponent<GvrPointerInputModule>().enabled = true;
//evenSystem.GetComponent<StandaloneInputModule>().enabled = false;
}
public void ButtonClick()
{
Debug.Log("这是2d场景");
}
}
相关文章推荐
- Unity说明文档翻译-2D or 3D Projects
- Unity推出2D工具:不再只是3D引擎
- unity 3d物体显示和2dUI显示相结合
- 【视频】unity 5.10.0(2D和3D)发布-新功能
- 学习手机游戏开发的两个方向 Cocos2d-x 和 Unity 3D/2D,哪个前景更好?
- unity下2d和3d混合使用教程,插件为OrtHello (一)
- unity区分点击在3D物体还是2D UI上
- 使用 Unity 3D 製作 2D 遊戲的重點做法
- Unity 3D项目问题笔记 //01_在 unity 中切割 2D图片
- 【Unity 3D 游戏引擎】使用 2DToolkit 插件 制作2D精灵动画
- 【Unity 3D】学习笔记二十:基础2D游戏界面
- unity开发状态下2d与3d模式的转换
- Unity 3D制作2D游戏的几种方法
- Unity 3D 官方教程—— 2D Physics系列 学习记录
- [转]Unity 3D旋转矢量方向及二维平面基于一点选择另一点(Rotate a Vector3 direction & Rotate a point about another point in 2D )
- Unity 3D项目问题笔记 //02_制作 2D UI相关问题
- 【手游游戏引擎】学习游戏开发的两个方向 Cocos2d-x 和 Unity 3D/2D (一)
- 【Unity 3D】使用 2DToolkit 插件 制作2D精灵动画
- 【手游游戏引擎】学习游戏开发的两个方向 Cocos2d-x 和 Unity 3D/2D (二)
- Unity-屏幕适配UGUI与3D/2D场景