U4S1L2——键盘输入
U4S1L2——键盘输入
本章代码关键字
123456789101112UnityEngine.InputSystem //InputSystem的命名空间Keyboard //键盘类Keyboard.current //获取当前活跃的键盘设备的属性KeyControl //键盘按键类keyControl.wasPressedThisFrame //该键盘按键是否在这一帧被按下keyControl.wasReleasedThisFrame //该键盘按键是否在这一帧抬起keyControl.isPressed //该键盘按键是否在这一帧被按住keyboard.onTextInput //通过事件监听按键按下keybroad.anyKey //该键盘的任意 ...
U4S1L1——导入Input System
U4S1L1——导入Input System
InputSystem包导入
InputSystem至少需要Unity2019版本以上才可以使用,并且需要手动安装
安装从Package Manager里安装即可,安装时会提示:是否启用InputSystem并禁用老输入系统
选择开启哪一种输入模式
选择InputSystem和 老InputManager的启用情况:
File——>Build Setting
——>Player Setting
——>Other
——>Active Input Handling
可以同时启用也可以只启用其中之一,每次启用后会重启Unity
如果没有选择Both的话,在工程内使用其中一种被禁用的输入系统都会报错
U4S1——输入系统 InputSystem
U4S1——输入系统 InputSystem
InputSystem
InputSystem 是 Unity提供的一种新的输入系统
最新InputSystem的运行环境需要 Unity 2019.4 以上版本 + .NET 4 runtime
它相对于老的输入系统更具拓展性和可自定义的替代方案
说人话:InputSystem 是 Unity提供的一套更好用更方便的用于检测键盘、鼠标、手柄、摇杆等等设备输入的系统
InputSystem和InputManager 的区别:
老输入系统:
InputManager是Unity的老输入系统,具体可看 ——> Input
我们需要自己写各种检测代码来判断设备输入,并处理对应逻辑
新输入系统:
不仅可以像老输入系统一样使用,还增加了输入配置的概念,
新输入系统将输入操作进行封装,让我们可以在Unity内进行输入配置文件编辑
我们不需要写代码来判断设备输入,只需要把工作重心放在逻辑处理上
选择建议:
游戏操作主要通过UI进行操作的游戏(手游,页游等)
可以选择老输入系统InputManager
游戏操作主要通过个各设备(手柄、鼠 ...
CS5L12——日期和时间
CS5L12——日期和时间
本章代码关键字
12345678910111213141516171819DateTime //C#提供给我们处理日期和时间的结构体new DateTime() //以年、月、日、时、分、秒、毫秒初始化(一般可以不需要全部填入,有多个重载)dateTime.Year //年dateTime.Month //月dateTime.Day //日dateTime.Hour //小时dateTime.Minute //分钟dateTime.Second //秒dateTime.Millisecond //毫秒dateTime.Ticks //以格里高利历00:00:00.000年1月1日以来的100纳秒间隔数表示,一般是一个很大的数字dateTime.DayOfYear //一年的第几天dateTime.DayOfWeek //星期几DateTime.Now ...
CS5L11——CSharp 9 功能和语法
CS5L11——CSharp 9 功能和语法
没有讲解,后补
CS5L10——CSharp 8 功能和语法
CS5L10——CSharp 8 功能和语法
C# 8 对应的Unity版本
Unity 2020.3 —— C# 8
但是部分新内容还不在该版本Unity中被支持,这里筛选了一些比较实用的内容给大家讲解
本章代码关键字
12345//不愧是C#,语法糖爆炸多,本章知识不建议看这里的关键字,尤其是模式匹配,你在这里看是看不懂的XDusing //using()语法的简写,当上层语句块执行完毕时会调用对象的Dispose()方法,以释放对象??= //空合并赋值运算符,当左侧变量为空时会把右侧值赋值给变量Deconstruct() //类的解构函数,用于将类的不同的成员变量拆分到不同的临时变量中when //when可以用于模式匹配里switch表达式内,添加更多的判断条件
C# 8 的新增功能和语法
Using 声明
静态本地函数
Null 合并赋值
解构函数 Deconstruct
模式匹配增强功能
静态本地函数
知识回顾:在C# 7的新语法中我们学习了本地函数
本地函数知识回顾:
基本概念: ...
CS5L9——CSharp 7 功能和语法
CS5L9——CSharp 7 功能和语法
C#7的新语法更新重点主要是 代码简化
今天学习的out和ref新用法,弃元、本地函数都是相对比较重要的内容,可以给我们带来很多便捷性
而元组和模式匹配知识点 是C# 7中引入的最重要的两个知识点
他们可以帮助我们更效率的完成一些功能需求,建议大家常用他们
本章代码关键字
123456//不愧是C#,语法糖爆炸多,本章知识不建议看这里的关键字,尤其是元组,模式匹配,你在这里看是看不懂的XDout //在out后面可以直接声明一个对应的变量ref //ref修饰值变量可以在赋值时使用引用传递,而非值传递,使变量指向另一个变量的内存空间() //元组is //is后面不仅可以跟类型,还可以跟常量,直接判断是否同类型的同时,是否值相同,也可以跟变量,只要类型相同,is前面的变量的值直接就可以赋值给后面的变量case //case可以用于在判断类型的同时,将判断的值赋值给类型后面的变量
C# 7 对应的Unity版本
Unity 2018.3支持 C# 7,Unity 2019.4支持 C# 7.3,7.1, 7.2, ...
CS5L8——CSharp 6 功能和语法
CS5L8——CSharp 6 功能和语法
本章代码关键字
123using static //导入某个类的静态成员和嵌套类型,而无需指定类型名称即可访问其静态成员和嵌套类型when //when的括号里面可以写bool表达式,以筛选异常nameof() //通过该表达式可以得到变量、类、函数等信息的具体字符串名称
C# 6 的新增功能和语法
=> 运算符(C#进阶套课——特殊语法 =>)
Null 传播器(C#进阶套课——特殊语法 ?)
字符串内插(C#进阶套课——特殊语法 $)
静态导入
异常筛选器
nameof 运算符
静态导入
用法:在引用命名空间时,在 using 关键字后面加入 static 关键词
作用:无需指定类型名称即可访问其静态成员和嵌套类型
好处:节约代码量,可以写出更简洁的代码
1234567891011121314151617181920212223242526using UnityEngine;using static UnityEngine.Mathf;using static ...
CS5L7-2——Task类
CS5L7-2——Task类
本章代码关键字
1234567891011121314151617181920212223System.Threading.Tasks //Task类的命名空间Task //Task类,任务类,基于线程池的对Thread类的封装Task() //Task的构造函数,传入多线程要执行的方法task.Start() //运行该对象的多线程,不过该多线程基于线程池Task.Run() //运行多线程的静态方法,不过该多线程基于线程池,直接传入多线程要执行的方法即可Task.Factory.StartNew() //运行多线程的静态方法,不过该多线程基于线程池,直接传入多线程要执行的方法即可Task<>() //Task<>的构造函数,传入多线程要执行的 ...
CS5L7-1——线程和线程池
CS5L7-1——线程和线程池
本章代码关键字
1234567ThreadPool //线程池类(静态类)ThreadPool.GetAvailableThreads() //获取可用的工作线程数和I/O线程数(应用程序内可开的最大线程数量)ThreadPool.GetMaxThreads() //获取线程池中工作线程的最大数目和I/O线程的最大数目(该应用程序最多可用的线程池的线程数量)ThreadPool.SetMaxThreads() //设置线程池中可以同时处于活动状态的工作线程的最大数目和I/O线程的最大数目ThreadPool.GetMinThreads() //获取线程池中工作线程的最小数目和I/O线程的最小数目(该应用程序线程池内默认存在的线程数量)ThreadPool.SetMinThreads() //设置工作线程的最小数目和I/O线程的最小数目ThreadPool.QueueUserWorkItem() ...