Bootstrap

unity3D实现点击按钮切换视角

一、实现目标

        实现点击GodView跳转到上帝视角,FreeView跳转到自由视角等等

        

二、实现方法

        第一步:创建脚本

  创建一个脚本 -- GodViewSelected用来使GodViewSelected显示,其它相机失效。

//version - 0.1
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class GodViewSelected : MonoBehaviour
{
    public Camera GodViewCamera;
    public Camera FreeCamera;
    public Camera FirstPersonCamera;
    // Start is called before the first frame update
    void Start()
    {

    }

    // Update is called once per frame
    void Update()
    {

    }
    public void GodCameraViewSelected()
    {
        GodViewCamera.gameObject.SetActive(true);
        FreeCamera.gameObject.SetActive(false);
        FirstPersonCamera.gameObject.SetActive(false);
    }
}

  创建一个脚本 -- FreeViewSelected用来使FreeViewSelected显示,其它相机失效。

//version - 0.1
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class FreeViewSelected : MonoBehaviour
{
    public Camera GodViewCamera;
    public Camera FreeCamera;
    public Camera FirstPersonCamera;
    // Start is called before the first frame update
    void Start()
    {
        
    }

    // Update is called once per frame
    void Update()
    {
        
    }
    public void FreeCameraViewSelected()
    {
        GodViewCamera.gameObject.SetActive(false);
        FreeCamera.gameObject.SetActive(true);
        FirstPersonCamera.gameObject.SetActive(false);
    }
}

  创建一个脚本 -- ThirdPersonViewSelected用来使FirstPersonViewSelected显示,其它相机失效。

//version - 0.1
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class FirstPersonViewSelected : MonoBehaviour
{
    public Camera GodViewCamera;
    public Camera FreeCamera;
    public Camera FirstPersonCamera;
    // Start is called before the first frame update
    void Start()
    {
        
    }

    // Update is called once per frame
    void Update()
    {
        
    }
    public void FirstPersonCameraViewSelected()
    {
        GodViewCamera.gameObject.SetActive(false);
        FreeCamera.gameObject.SetActive(false);
        FirstPersonCamera.gameObject.SetActive(true);
    }
}

第二步 :将第一步创建的三个脚本分别添加到GodViewCamera,FreeCamera02,FirstPersonCamera

第三步:给三个Buttons添加OnClick()事件

        

        

注:我在这里以GodViewCameraButton为实例,添加OnClick()事件调用脚本 -- GodViewSelected中的GodCameraViewSelected()函数。

3.1将GodViewCamera拖入到Object中

3.2选择Function -  GodViewSelected - GodCameraViewSelected()

其余两个按钮添加OnClick()事件之后,便可以实现本章目标。

三、结果测试

        点击GodView跳转可以到上帝视角

        点击FreeView跳转到自由视角

        点击FirstPerson跳转到第一人称视角

四、结果分析

        由于我在之后的项目过程中还会添加其它相机,那么我必须修改在之前每一个相机上的脚本。

五、后续问题分析

        问题1:在实际测试过程中,我在第一人称跳跃(按空格键)时会触发到按钮,为了禁掉这一点,可以按下述内容操作:

  1. 选择UI按钮对象。
  2. 在Inspector面板中,找到Button组件。
  3. 在Button组件下,检查Navigation部分的设置。默认的Navigation模式可能会导致空格键关联到按钮的点击事件。
  4. 将Navigation的Mode改为None,这样可以避免按钮接收键盘输入作为触发条件。

        

;