当前位置: 首页 > ai >正文

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

写在前面:

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

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

1、场景切换

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

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

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

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

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

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

2、退出游戏

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

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

void Update()
{if(Input.GetKeyDown(KeyCode.Escape)){Application.Quit();}
}

十八、鼠标隐藏锁定相关

1、隐藏鼠标

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

void Start()
{Cursor.visible = false;
}

2、锁定鼠标

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

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

None,不锁定

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

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

void Start()
{Cursor.lockState = CursorLockMode.None;
}

3、设置鼠标图片

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

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

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

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

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#中的生成方法,需要指明命名空间。如下例所示:

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,这个暂做了解看到了知道是委托就行。

using UnityEngine.Events;
void Start()
{UnityAction uac = () =>{};UnityAction<string> uac1 = (s) =>{};
}
http://www.xdnf.cn/news/17487.html

相关文章:

  • redis笔记(二)
  • 深入解析游戏引擎(OGRE引擎)通用属性系统:基于Any类的类型安全动态属性设计
  • 《深度剖析前端框架中错误边界:异常处理的基石与进阶》
  • Rust 实战五 | 配置 Tauri 应用图标及解决 exe 被识别为威胁的问题
  • 麒麟系统使用-PATH设置
  • 【96页PPT】华为IPD流程管理详细版(附下载方式)
  • 34-Hive SQL DML语法之查询数据-3
  • 游戏盾是什么?
  • Vibe Coding 自然语言驱动 AI 编程方式
  • 在Linux中部署tomcat
  • Android Coil3视频封面抽取封面帧存Disk缓存,Kotlin
  • 自然语言处理实战:用LSTM打造武侠小说生成器
  • GraalVM !拥抱云原生的 JVM
  • Python 的浅拷贝 vs 深拷贝(含嵌套可变对象示例与踩坑场景)
  • 人工智能正在学习自我提升的方式
  • TF-IDF提取关键词(附实战案例)
  • 商业解决方案技术栈总结
  • CVPR医学图像三套创新方案:通用分割+3D高效解码+SSM肿瘤定位(附链接)
  • 算法训练营day44 动态规划⑪ 1143.最长公共子序列、1035.不相交的线、53. 最大子序和、392.判断子序列
  • 【Redis】持久化方案——RDB和AOF
  • Vue3从入门到精通: 2.5 Vue3组件库开发与设计系统构建
  • 海关 瑞数 失信企业 逆向 分析 后缀 rs
  • Java高并发场景下的缓存穿透问题定位与解决方案
  • MySQL的存储引擎:
  • Java中new的相关知识
  • TDengine IDMP 快速体验(方式二 通过 docker)
  • 系统测试讲解 - Java使用selenium实现滑块验证的处理详解
  • Qt 框架全面解析:从基础到应用
  • 亚麻云之静态资源管家——S3存储服务实战
  • 在Word和WPS文字一页中实现一栏与多栏混排