event委托在类内可完全修改
(前提为该event在类中的声明为public,外部可访问,然后外部访问的时候不能直接改)
下面这段代码是在 类的内部 访问事件
cs
void ClearAllListeners()
{
MyEvent = null;
}
event
修饰的委托字段 在类内部没有限制直接赋值的权限,所以可以赋值为 null
,或者任意修改
event
修饰符的设计初衷 :保护++外部代码不能随意破坏事件,但允许声明事件的类对事件有完全的控制权。++
C# 语言对 event
的设计是为了分离订阅者和触发者的权限
- 类外部 :
- 只能订阅或取消订阅,保证事件机制的完整性,不会被意外破坏。
- 类内部 :
- 拥有完全的控制权,便于事件管理(包括清空订阅、触发等)。
event
修饰符的访问规则
操作 | 类内部 | 类外部 |
---|---|---|
+= |
✅ 支持 | ✅ 支持 |
-= |
✅ 支持 | ✅ 支持 |
直接赋值 | ✅ 支持 | ❌ 禁止 |
Invoke() |
✅ 支持 | ❌ 禁止 |
Lua连通的散乱印象抓取
toLua对泛型的支持并不好
想在tolua中使用协程,首先要在初始化中的LuaMgr里
LuaCorountine.Register(luaState,this)进行协程注册
带 event
修饰的委托 更安全,限制只能订阅(+=
)和取消订阅(-=
),不能直接赋值
list和dic的使用基本都是在贴合c#中的使用模式
tolua和xlua作用点是大致相同的,只是里面的定义形式不太一样,xlua更主流一些
对于某一泛型的设置,也需要加到customTypeList 里设置,才可以识别出来
c#读取Lua中的表对象,(也是引用拷贝)
LuaTable 的接收到的表变量,是引用拷贝的
委托泛型中的协变逆变,协变要传入父类in,逆变要传入子类out
VScode的环境搭建和相关优化
VScode快捷键
Windows/Linux : Ctrl + /,注释选中的代码(每行前面都加上//)
Windows/Linux : Shift + Alt + A,使用块注释(选区前后加上/* .... */)
Windows/Linux : Ctrl + K Ctrl + F,选中代码格式化,包括注释行
GitHub Copilot 的常用快捷键
- Tab :
- 接受 Copilot 提供的代码建议。
- Alt + [ (向前) 和 Alt + ] (向后) :
- 浏览 Copilot 提供的多种代码建议。
触发建议窗口
- Ctrl + Enter (Windows/Linux)
- ++手动触发代码建议++,即使没有上下文。
屏幕相关快捷键
Ctrl + Shift + P (Windows/Linux)
现在学的话也应该针对不到需要的点,还是实际开发的时候想想可以简化的地方吧
youtube的使用插件,在谷歌下载
------------------------------ - YouTube 速度控制: ------
单击,并保持下一次长按,状态保持于2倍速,释放后恢复一倍速
向右拖动以获得更快的速度
向下拖动后再释放以继续以该速度观看
微调速度 - 点击逗号或句号可将速度调高或调低 5%,长按则状态于5倍速
https://chromewebstore.google.com/detail/youtube-ad-accelerator-ea/lmcggcabhocpfkbddekmconplfjmmgmn
VScode快捷键:ctrl+p搜索文件名寻找
按住键盘ctrl键实现所有同名区域的选择,右键更改所有匹配项,也可以重命名全部变量
查找所有引用
c#还有一个自动引用命名空间的插件,但现在也弃用了,不维护
插件生态是很丰富的,平时觉得哪里麻烦的话可以想想插件可不可以解决问题
Unity Snippets下载
然后是unity tool的下载
debugger for unity现在弃用了,所以下另一个,使用直接叫unity的插件
然后在vscode里使用c#就没问题了,接着上面就是vscode和unity的衔接
vscode默认没有三杠注释,所以要再加个这个插件
现在的vscode用c#的话,是用这个扩展
C# for Visual Studio Code (powered by OmniSharp) ,主要用于提供对 C# 编程语言的支持。它++并不是完整的 Visual Studio 集成开发环境(IDE),而是一个轻量级的编辑器插件++,旨在帮助开发者在 VSCode 中进行 C# 开发。以下是它的主要功能和用途:
1. 代码高亮和语法支持
- 代码高亮:C# 代码在编辑器中会自动高亮,帮助开发者更容易阅读和理解代码结构。
- 智能感知:提供自动补全功能,显示方法、类和变量的建议,减少打字错误。
- 语法检查:实时显示代码中的语法错误和警告,帮助开发者在编写代码时发现问题。
2. 调试支持
- 集成调试:C# 插件支持通过 VSCode 的调试器进行调试,允许你设置断点、单步执行、查看变量值等。
- 调试配置 :提供
launch.json
文件的生成和配置功能,支持 .NET Core 和 .NET Framework 应用程序的调试。
3. 项目和解决方案支持
- 多项目支持 :插件支持
.NET
项目文件(如.csproj
)的加载和解析,能够在 VSCode 中识别和管理多项目解决方案。 - 项目文件操作:可以通过插件进行编译和构建操作(需要配合 .NET SDK)。
4. 代码导航和重构
- 转到定义和引用:支持右键单击或快捷键操作以快速跳转到方法、类或变量的定义。
- 查找引用:可以查找和显示当前选中变量或方法的所有引用位置。
- 重构工具:虽然不如完整 IDE 的重构功能强大,但插件支持一些基本的重构操作,如重命名、提取方法等。
5. 扩展功能
- OmniSharp 服务器:插件使用 OmniSharp 作为后台服务来解析 C# 代码并提供智能感知、调试等功能。它是一个开源的 .NET 开发环境服务,支持 .NET Core 和 .NET Framework。
- 其他插件支持:可以与其他 VSCode 插件(如 Git 工具、Docker、Jest 等)协同使用,以便进行多功能开发和调试。
6. 支持 .NET Core 和 .NET Framework
- 跨平台支持:插件能够在 Windows、Linux 和 macOS 上工作,支持开发 .NET Core 应用程序和 .NET Framework 应用程序(对于非 Windows 平台,主要是 .NET Core)。
- 兼容性:支持 C# 语言的不同版本(例如 C# 7.x、8.x、9.x 等)。
先搜Chinese设置中文
找不到AssetBundle的问题
"com.unity.assetbundlebrowser": "1.7.0"
把这个接在末尾就可以了
AssetBundle Browser ->Build ->Advanced Settings -> Compression
打包时的压缩方式
Compression
选项
Compression
是指对打包生成的 AssetBundle 文件应用不同的压缩算法
(1)Uncompressed
- 特点:
- AssetBundle 不会进行压缩,文件大小较大。
- 运行时加载速度快(因为无需解压缩)。
- 适用场景: 对++存储空间不敏感,但追求快速加载++(如本地运行的大型游戏资源)。
(2)LZMA
- 特点:
- ++最大压缩率,最小文件大小++。
- ++运行时加载时需要解压缩++,占用较高的 CPU 和内存。
- 解压后的资源会被++临时存储到内存或磁盘++中。
- **适用场景:**初始下载包的 AssetBundle,追求最小文件大小以节省带宽和存储。
- 注意: ++LZMA 下的 AssetBundle 运行时无法直接加载++ ,Unity 会将其++转换为 LZ4 格式++,耗时较多。
(3)LZ4
- 特点:
- 较高的压缩率,但不如 LZMA。
- 支持运行时直接加载(无需额外解压步骤)。
- 提供平衡的文件大小和加载速度。
- 常用
选项对比总结
压缩方式 | 文件大小 | 加载速度 | 适用场景 |
---|---|---|---|
Uncompressed | 最大 | 最快 | 本地测试、大型本地资源 |
LZMA | 最小 | 慢(需解压) | 初始安装包、小型资源 |
LZ4 | 中等 | 快 | 热更新资源、运行时频繁加载的资源 |
开发中的注意事项
- 如果资源在 运行时频繁加载 ,推荐选择
LZ4
,避免解压缩开销。 - 如果资源用于 一次性打包下载 (如游戏的安装包),可以使用
LZMA
减小文件大小。 - ++Uncompressed 适合开发阶段测试,但发布时一般不推荐使用++。