U4S1L3——鼠标输入
U4S1L3——鼠标输入 本章代码关键字 1234567891011121314Mouse //鼠标类Mouse.current //获取当前鼠标设备ButtonControl //鼠标对象类mouse.leftButton //鼠标左键mouse.middleButton //鼠标中键mouse.rightButton //鼠标右键mouse.forwardButton //鼠标侧前键mouse.backButton //鼠标侧后键buttonControl.wasPressedThisFrame //鼠标按键按下buttonControl.wasReleasedThisFrame...
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 进行操作的游戏(手游,页游等) 可以选择老输入系统...
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 功能和语法 目标类型化 new 在已知变量类型的情况下,使用 new 实例化对象时可以直接省略掉 new 关键字后面的类型,使变量的赋值语句变得更简单 相比 var,它可以不仅可以用于临时变量初始化时,还可以用于类的成员变量以及对变量的重新赋值的情况 实际上,new() 在所有可以推导出类型的上下文中,都可以使用,包括在初始化器内部,只要能够确定赋值类型是什么 1234567891011121314151617class Test {}class Program{ List<int> numbers = new(); Test obj = new(); static Dictionary<string, List<Test>>? testDict; static void Main() { testDict = new() { ...
CS5L10——CSharp 8 功能和语法
CS5L10——CSharp 8 功能和语法 C# 8 对应的 Unity 版本 Unity 2020.3 —— C# 8 但是部分新内容还不在该版本Unity中被支持,这里筛选了一些比较实用的内容给大家讲解 本章代码关键字 1234using //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 支持...
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...
CS5L7-2——Task类
CS5L7-2——Task类 本章代码关键字 1234567891011121314151617181920212223System.Threading.Tasks //Task类的命名空间Task //Task类,任务类,基于线程池的对Thread类的封装Task() //Task的构造函数,传入多线程要执行的方法task.Start() //运行该对象的多线程,不过该多线程基于线程池Task.Run() //运行多线程的静态方法,不过该多线程基于线程池,直接传入多线程要执行的方法即可Task.Factory.StartNew() //运行多线程的静态方法,不过该多线程基于线程池,直接传入多线程要执行的方法即可Task<>() ...