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() ...
CS5L7——CSharp 5 功能和语法
CS5L7——CSharp 5 功能和语法 本章代码关键字 12async //异步方法关键字await //挂起方法,开启新线程的关键字,直到线程执行完毕再继续执行该方法后续逻辑 C# 5 的新增功能和语法 调用方信息特性(C#进阶——特性) 异步方法 async 和 await 在学习异步方法 async 和 await 之前 我们必须补充一些知识点 线程和线程池 Task类 异步与同步 同步和异步主要用于修饰方法 同步方法: 当一个方法被调用时,调用者需要等待该方法执行完毕后返回才能继续执行 异步方法: 当一个方法被调用时立即返回,并获取一个线程执行该方法内部的逻辑,调用者不用等待该方法执行完毕 简单理解异步编程,我们会把一些不需要立即得到结果且耗时的逻辑设置为异步执行, 这样可以提高程序的运行效率,避免由于复杂逻辑带来的的线程阻塞 何时需要异步编程 需要处理的逻辑会严重影响主线程执行的流畅性时,我们需要使用异步编程,比如: 复杂逻辑计算时 网络下载、网络通讯 资源加载时等等 异步方法 async 和...
CS5L6——CSharp 1~4 功能和语法
CS5L6——CSharp 1~4 功能和语法 C# 1~4 版本中的功能和语法,大多数我们已经在C#四部曲中学习完毕 命名和可选参数可以帮助我们少写一些重载函数 动态类型可以让我们在某些情况下节约代码量 但是由于要使用 .Net 4.x(.NET Framework),并且 IL2CPP 不支持,所以不建议使用它,但是如果有特殊需求不得不用,那我们只有退而求其次 本章代码关键字 1dynamic //动态类型,编译时不会检查该对象的类型,与该对象相关的操作都将一起打包,只在运行时进行评估 最低支持的C#版本 只要是 Unity 5.5 及以上的版本,就支持 C# 4 版本 C# 1~4的功能和语法 注意:在这里不会提及所有的内容 主要会提及 Unity 开发中会用到的一些功能和特性 对于一些不适合在 Unity 中使用的内容会省略 C# 1 —— 委托、事件(C#进阶) C# 2 —— 泛型、匿名方法、迭代器、可空类型(C#进阶) C# 3 ——...
CS5L5——CSharp版本和Unity的关系
CS5L5——CSharp版本和Unity的关系 由于新版本Unity会同时更新,Scripting Runtime(脚本运行时)和 C#编译器的版本 所以随着Unity版本的提升,我们能够使用到的C#的新功能和新特性也会增加 我们要大概了解自己正在使用的Unity版本能够支持的C#版本,这样在开发时我们就能使用一些对应版本的新功能和特性了 Unity 2021.3 ~ 2022.3 —— C# 9 Unity 2020.3 —— C# 8 Unity 2019.4 —— C# 7.3 Unity 2017 —— C# 6 Unity 5.5 —— C# 4 并且,对于.Net API兼容级别的认识是,正常情况下,我们都会使用 .NET Standard 补充:何为.NET Standard .NET Standard 是针对多个 .NET 实现推出的一套正式的 .NET API 规范。 推出 .NET Standard 的背后动机是要提高 .NET 生态系统中的一致性。 .NET Standard 允许库在不同的 .NET 实现(如 .NET Core、.NET...
CS5L4——IL2CPP模式可能存在的问题处理
CS5L4——IL2CPP模式可能存在的问题处理 对于我们目前开发的新项目,都建议大家使用IL2CPP脚本后处理模式来进行打包 主要原因是因为它的效率相对 Mono 较高,同时由于它自带裁剪功能,包的大小也会小一些 但是如果在测试时出现类型无法识别等问题,需要用到我们这节课学习的知识点来解决这些问题 安装IL2CPP打包工具 Edit——Project Settings——Player——Scripting Backend里选择IL2CPP即可将IL2CPP作为脚本后处理方式 但是在此之前,我们需要先到Unity Hub里下载IL2CPP模块才能使用IL2CPP打包 IL2CPP打包存在的问题 类型裁剪 IL2CPP在打包时会自动对Unity工程的DLL进行裁剪,将代码中没有引用到的类型裁剪掉,以达到减小发布后包的尺寸的目的。 然而在实际使用过程中,很多类型有可能会被意外剪裁掉,造成运行时抛出找不到某个类型的异常。 特别是通过反射等方式在编译时无法得知的函数调用,在运行时都很有可能遇到问题 解决方案: IL2CPP处理模式时,将 PlayerSetting...
CS5L3——Unity跨平台的基本原理之IL2CPP
CS5L3——Unity跨平台的基本原理之IL2CPP 本章主要内容 IL2CPP是什么 是Unity4.6.1版本之后加入的新的一种跨平台解决方案 Mono跨平台回顾 C#代码—>Mono C#编译器—>IL中间代码—>Mono VM—>操作系统的原生代码 IL2CPP跨平台原理 C#代码—>Mono C#编译器—>IL中间代码—>IL2CPP—>C++—>C++编译器—>原生汇编代码—>IL2CPP VM Mono和IL2CPP的区别 IL2CPP效率高于Mono,跨平台也更好维护。 Mono是JIT即时编译,IL2CPP是AOT提前编译 Mono和IL2CPP两种方式的使用建议 建议使用效率更高的IL2CPP IL2CPP IL2CPP 是在 Unity4.6.1 p5 之后的版本中加入的脚本后处理方式 你可以把它简单理解为是:继Mono之后的一种跨平台解决方案 顾名思义就是把 IL中间代码 转译为...
CS5L2——Unity跨平台的基本原理之Mono
CS5L2——Unity跨平台的基本原理之Mono 主要内容 Unity和Mono的关系 利用Mono实现Unity上层逻辑的跨语言和跨平台 Unity跨平台的必备概念 Unity底层是C/C++,上层逻辑支持多语言(目前只用C#) Mono的基本构成有C#编译器、Mono运行时(虚拟机)、各种类库等 Unity跨平台的基本原理(Mono) 将基于CLI公共语言基础规则的语言编译成CIL公共中间语言,再通过Mono VM(虚拟机)...
CS5L1——.NET相关知识
CS5L1——.NET相关知识 微软的.NET是什么 是一个包含编程语言、框架、IDE等产品的系列产品统称 .Net跨语言的实现 CLI公共语言基础结构(CTS公共类型系统) CLS公共语言规范是它的子级 .Net跨平台的实现 基于 .NET Framework 的 Mono 和 .NET Core 都基于CLI公共语言基础结构和CLR公共语言运行时实现跨语言和跨平台 .NET 微软的 .NET 既不是编程语言也不是框架,是类似于 互联网时代、次时代、21世纪、信息时代 之类的宣传口号 它是一整套技术体系的统称,或者说它是微软提供的技术平台的代号 包含的内容有: 框架体系:.NET Framework、.NET Core、Mono 等等 开发语言:C#、VB、F等等(C#是.Net平台主推的开发语言) 开发工具:Visual Studio、Visual Studio Code...
CS5——CSharp知识补充
CS5——CSharp知识补充 C#知识补充——系列代号CS5 虽然通过C#四部曲的学习,我们已经掌握了绝大部分常用和实用的C#知识点。 但是通过本套C#知识补充课程,我们可以达成以下目的: 了解Unity跨平台的基本原理 了解不同版本Unity使用的C#版本,并学习这些C#版本中的知识点 对实用的C#知识点进行补充 从而进一步的提高我们阅读代码的能力和编程能力 注意!C#新加的内容更多是为了节省代码量提升开发效率,但是它并不是必备的内容 , 因为即使你没有学习这些内容,也能够进行正常开发要根据实际需求选择使用, 而不要为了使用而使用,更重要的还是要培养自己的逻辑思维能力 由于该系列是对 C# 知识点的补充,随着Unity版本的更新和 C# 版本的更新, 将来可能会存在各种新功能和新语法,所以本系列将一直处于持续更新的状态 随着 Unity 对 C# 版本支持的提高,以及新知识点的加入,其中 C# 各版本新功能和语法和 C# 其它知识补充,将会随着时间推移不停的往其中添加新知识点 C#...
UMVCL1——MVC基本概念
UMVCL1——MVC基本概念 MVC基础概念.pdf MVC的历史——主要用于软件和网页开发 MVC的基本概念——数据、界面、业务逻辑分离 MVC在游戏中的应用——非必须的UI系统开发框架 MVC的历史 MVC思想的出现,并不是为了做游戏,它是一种软件开发的编程思想 自定前提: 我们粗略的把计算机上使用的工具分为:应用软件、网页、游戏 MVC是应用软件开发和网页开发里最常用和流行的通用开发框架 软件、网页的基本构成 应用软件和网页基本功能都是由UI(用户界面)和Data(数据)构成的 软件、网页的使用规则 就是因为下面的使用规则,所以诞生了MVC MVC的基本概念 MVC全名是Model View...