Unity开发中总结的一些小技巧

本文分享了作者在Unity3D手机游戏开发中积累的一些实用技巧,包括如何通过改变Time.timeScale来调整游戏运行速度,以及如何利用鼠标滚轮快速调节摄像机视角大小,这些技巧有助于提高开发效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

搞Unity3D手机游戏开发快2年了,工作中为了提高效率,攒了一些小技巧,在这里分享一下。

1.改变游戏运行速度

     在调动画,战斗,特效之类的时候特别有用,加速运行或者减速运行使调试更方便。

    void Update()
    {
        TestCase();
        ControlSpeed();
       //if (Input.GetKey(KeyCode.LeftControl) || Input.GetKey(KeyCode.RightControl))//按下Ctrl键才好使,这个看自己的习惯来决定是否需要
            if (UnityEditor.EditorWindow.mouseOverWindow && UnityEditor.EditorWindow.mouseOverWindow.titleContent.text.Equals("Game"))//鼠标在Game视图里
                ControlZoomIn();
    }

    void ControlSpeed()
    {
        if (Input.GetKeyDown(KeyCode.F1))
            Time.timeScale = 1f;
        else if (Input.GetKeyDown(KeyCode.F2))
            Time.timeScale = 2f;
        else if (Input.GetKeyDown(KeyCode.F3))
            Time.timeScale = 3f;
        else if (Input.GetKeyDown(KeyCode.F4))
            Time.timeScale = 4f;
        else if (Input.GetKeyDown(KeyCode.F5))
            Time.timeScale = 0.2f;
        else if (Input.GetKeyDown(KeyCode.F6))
            Time.timeScale = 0.1f;
        else if (Input.GetKeyDown(KeyCode.F7))
            Time.timeScale = 0.05f;
        else if (Input.GetKeyDown(KeyCode.F10))
            Time.timeScale = 0f;
        else if (Input.GetKeyDown(KeyCode.F11))
            EditorApplication.isPaused = true;
    }

        原理很简单,就是运行的时候改变Time.timeScale实现加速和减速,timeScale改变会影响所有跟时间有关系的模块的运行速度。

        我这里是在Update里监视按键,当然你也可以使用其他方式来控制,我觉得按键更方便。

        最后两个比较特别,其中F10是把Time.timeScale设置为0,这时候我们的项目还是在跑的,只是和Unity的Time有关的都会因为Time不变而不变(动画,粒子特效之类的),此时相当于游戏暂停,还可以接受键盘事件,按F1恢复正常。F11 则是调用了编辑器的暂停,和鼠标点击Unity编辑器中的暂停效果一样,此时项目被挂起,Update也不执行了,所以要想恢复,得鼠标去编辑器里再次点击暂停按钮。

        有时候就是想在运行到特定状态的时候暂停在那,用F11比鼠标去点击更精确方便。

也可以通过扩展菜单栏来实现快捷键控制暂停和播放

    /// <summary>
    /// F12键控制编辑器暂停和播放
    /// </summary>
    [MenuItem("Edit/PlayOrPause _F12",false, -100)]
    static void PlayOrPause()
    {
        EditorApplication.isPaused = !EditorApplication.isPaused;
    }

 知识点总结:

         这里的Time是UnityEngine中的Time,Time.timeScale可以理解为时间的缩放比例,为0的时候时间(Time.time的值)就静止不变了,0到1之间是减速,为1的时候正常,大于1的时候时间加速,比如Time.timeScale = 2的话,那么Time.time的增长速度也会变成2倍速度。如果你想取到游戏的实际时间,那么使用Time.timeSinceLevelLoad就可以,前提是必须在Awake()方法以后再取,如果在  Awake()方法里面取Time.realtimeSinceStartup会取出一个错误的值,在Start方法里面取的话就正常了

     timeScale不会影响Update和LateUpdate的执行速度,只会影响FixedUpdate的速度,为0的时候FixedUpdate不再执行。

     EditorApplication.isPaused = true;这个是Unity编辑器暂停,项目中的代码都会被暂停执行

2.鼠标滚轮调节摄像机视角大小

    滚轮快速调节视角大小,直观上就像是把看到的画面拉近拉远了一样,在调一些技能效果的时候尤其有用。

    void ControlZoomIn()
    {
        float minFov = 15f;
        float maxFov = 90f;
        float sensitivity = 10f;
        if (Camera.main)
        {
            float fov = Camera.main.fieldOfView;
            fov -= Input.GetAxis("Mouse ScrollWheel") * sensitivity;
            fov = Mathf.Clamp(fov, minFov, maxFov);
            Camera.main.fieldOfView = fov;
        }
    }


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值