搜维斯网站建设,科技部部长用梅西解释chatgpt,桂林象鼻山的传说,他达拉非说明书Unity跨平台原理 .Net相关
只要编写的时候遵循.NET的这些规则#xff0c;就能在.NET平台下通用 各种源码→根据.NET规范编写→(虚拟机)生成CIL中间码(保存在程序集中)→转成操作系统原代码 跨语言← 跨平台↓ Unity跨平台原理#xff08;Mono#xff09; c#脚本→MonoC#编… Unity跨平台原理 .Net相关
只要编写的时候遵循.NET的这些规则就能在.NET平台下通用 各种源码→根据.NET规范编写→(虚拟机)生成CIL中间码(保存在程序集中)→转成操作系统原代码 跨语言← 跨平台↓ Unity跨平台原理Mono c#脚本→MonoC#编译器→IL中间代码→monoRunTIme虚拟机→操作系统原生代码 Unity跨平台原理IL2CPP 跨平台总结
各种源码→根据.NET规范编写→(虚拟机)生成CIL中间码(保存在程序集中)→转成操作系统原代码 跨语言 ↑ 跨平台 ↓
Monoc#脚本→MonoC#编译器→IL中间代码→monoRunTIme虚拟机→操作系统原生代码
IL2CPPmono直接将中间代码转原生代码。IL2CPP先将中间码转C再转原生码 *IL2CPP模式可能存在的问题处理 新版本有一个minimal 比low还要小。 最大测试程度直接选Hight打包看抱不报错
如果报错再创建这个Link.xml 去配置 。配置规则用到了再来查。上面是注释下面是方法 下面是没有被裁剪但它本身是泛型的时 c虽然没有被使用但它被存在这个类里。所以不会被剥离
二、
我想保留IL2类中的Test方法只要在这个静态test中使用它一次。 test本身是永远不会被调用的
一个保留泛型类一个保留泛型方法。 C#各版本新功能和语法 命名可选参数、动态类型 原来需要按顺序传参数现在写出参数名字后面跟 就可以不按规则顺序来传参数 在这种有默认值的函数甚至可以少些一些参数(前提是你就是要用它的默认值) 线程池
引入命名空间
复习
记得关闭。数据不互通此时停止Unity线程不会停止这时停止运行线程才会跟着停止。与主线程数据不互通
线程池 获取可用的线程数。获取最大的、设置可以同时开启的线程数。比如只能同时开20个 返回一个bool
最大设为20后第21个不会被创建它只会等等到有空位。
最小的也可以得到、设置 比如min10max12. 我此时有11. 这时又排进来一个12因为还没到达最大值就会创建一个新的线程给12用。 再排进来一个13因为已经超过MAx所以不会再新创建而是排队等空余。 从线程池里取出来一个线程用来执行该方法也就是把方法加入线程池的排队队列
此时obj是空如果加一个参数↓ 那么obj就会是这个参数 *Task任务类 这种方法直接就运行不需要Start 无返回值↑ 有返回值 return↓ 想返回什么类型就填什么类型。其他方法类似
解决方法主线程中获取Result返回值时停止循环。
异步执行↑ 同步执行↓ Task t new Task t.RunSynchronously Task t new Task (Action t.wait() Task.WaitAnyt1t2) Task.WaitAllt1,t2) | 一个条件一个|条件
wait和when一个群伤一个单体这么理解就好了 通过申明一个这个对象用它里面的标识符替换用来的bool值默认是false
好处是里面有更多功能给我们用延迟取消 *异步方法Async、Await
Asunc其他地方还是同步执行只有被Await修饰的地方才是异步 你写异步方法的时候就应该习惯用Async结尾 可以带参可以有返回值但有限制
1/正常输出1232/TestAsync挂起 主线程继续执行 等待2结束 3/ 2中的Task执行结束继续执行TestAsync中的3 线程间数据不互通就像不同方法间参数不互通一样。 网络通信中也会用到这两个关键字
静态导入、异常筛选器、Nameof 静态导入 可以不再写类名 比如这里只有当e这个错误当中的消息包含301时才会执行后面的逻辑
可以用来给301、302、303等不同错误做区分 nameof使用场景其实比较少可能配合异常捕获来告诉别人是那个位置(名字)出了错误 这种情况用tostring就不合适了就可以用nameof *_字面改进、弃元。out_
一看就知道是九亿如果有类型不同的重载就不能用不确定的匿名
本地函数、ref临时返回值
此时test1也变成了900 赋值变为引用
结构体同理
如果要用函数则也需要ref关键字return也要加
也没必要写修饰符 *元组、模式匹配
还有很多自带异常类 允许加入自定义类型 元组是值类型 具体应用↓ 弃元符号 模式匹配 可以直接判断是不是这个值 可以判空 是int 则直接赋值进i
switch也可以存判断条件更多
匿名用的比较少。只是把v存成和o一样的类型
静态本地函数、Using、Null赋值合并、Deconstruct 相当于本地函数不能使用上层函数 此时想要再使用就只能通过传参 首先得保证using对象有Dispose这个方法
继承这个接口重写该方法释放逻辑自己定
这种写法只有在其上层函数结束时才会释放该对象 a b?? 1; ab,b为空则a1 a ?? 1; a为空则1
解构函数 因为一个类对象实际是引用类型直接赋值会造成地址上的关联。而解构函数可以只取出变量值 解构函数可以有多个每个参数不同相当于重载一样。这样外面不管什么形式的元组都可以获取 申明一个p且单独把其中的变量值提取出来 模式匹配增强 判断这个对象的属性是不是这个值那个属性是不是那个值↑ 结合使用↓
你要用传统的写也可以。
配合Switch可以判断多个条件的满足情况。加分号。 元组则不需要数据结构类 可以连变量名都省略
when关键字可以配合switch使用要同时满足多个条件这里抛砖引玉
顶级语法 C#其他功能
时间戳