Unity笔记(五)知识补充——场景切换、退出游戏、鼠标隐藏锁定、随机数、委托

写在前面:

写本系列**(自用)**的目的是回顾已经学过的知识、记录新学习的知识或是记录心得理解,方便自己以后快速复习,减少遗忘。主要是C#代码部分。

十七、场景切换和退出游戏

1、场景切换

场景切换使用方法: SceneManager.LoadScene(),括号里传入场景名称。

需要引用命名空间using UnityEngine.SceneManagement;

需要注意的是:直接写代码切换场景可能会报错,因为还需要把该场景加载到场景列表中。

在上方菜单栏File中选中Build Settings,在这里加载场景即可:

之后使用这段代码就可以实现按下空格切换场景:

cs 复制代码
using UnityEngine.SceneManagement;
void Update()
{
    if(Input.GetKeyDown(KeyCode.Space))
    {
        SceneManager.LoadScene("Scene2");
    }
}

2、退出游戏

退出游戏使用:Application.Quit();

但是在编辑模式下没有作用,一定是发布游戏后才有用:

cs 复制代码
void Update()
{
    if(Input.GetKeyDown(KeyCode.Escape))
    {
        Application.Quit();
    }
}

十八、鼠标隐藏锁定相关

1、隐藏鼠标

隐藏鼠标很简单,使用Cursor.visible = false即可:

cs 复制代码
void Start()
{
    Cursor.visible = false;
}

2、锁定鼠标

Unity为锁定鼠标也提供了相应的API。

使用:Cursor.lockState = CursorLockMode,共有三个枚举参数:

None,不锁定

Locked锁定,鼠标会被限制在屏幕中心点。不仅会被锁定,还会被隐藏,可以通过esc键摆脱

Confined锁定,限制在窗口范围内,同样也是通过esc键摆脱

cs 复制代码
void Start()
{
    Cursor.lockState = CursorLockMode.None;
}

3、设置鼠标图片

设置鼠标图片使用:Cursor.SetCursor(),可以传入三个参数:

参数一:光标图片,图片需要是半透明或者在Inspector窗口中改成光标模式。传入的图片如果宽高相同就不会被压缩

参数二:偏移位置 相对图片左上角

参数三:平台支持的光标模式(硬件或软件),一般不改变,使用自动模式

cs 复制代码
public Texture2D tex;
void Start()
{
    Cursor.SetCursor(tex, Vector2.zero, CursorMode.Auto);
}

十九、随机数和Unity自带委托

1、随机数

Unity中随机数生成使用:Random.Range(),例如,生成0~99之间的随机整数:

int randomNum = Random.Range(0, 100);这里不包含最右边的100

假如是生成随机浮点数,左右都包含,如生成1.1~99.9之间的随机浮点数:

float randomNumF = Random.Range(1.1f, 99.9f);

这是Unity命名空间中的随机数生成,与C#命名空间的随机数生成不一样。如果还想使用C#中的生成方法,需要指明命名空间。如下例所示:

cs 复制代码
void Start()
{
    //0~99之间的随机数
    int randomNum = Random.Range(0, 100);
    print(randomNum);

    //左右都包含
    float randomNumF = Random.Range(1.1f, 99.9f);

    //C#中的,基本不用
    System.Random r = new System.Random();
    r.Next(0, 100);
}

2、委托

Unity中的委托和C#委托的用法基本一致,只是使用的方法名不同:UnityAction,这个暂做了解看到了知道是委托就行。

cs 复制代码
using UnityEngine.Events;
void Start()
{
    UnityAction uac = () =>
    {

    };

    UnityAction<string> uac1 = (s) =>
    {

    };
}