*学习记录(27)

时间:2024-12-06 13:48:10

event委托在类内可完全修改

(前提为该event在类中的声明为public,外部可访问,然后外部访问的时候不能直接改)

下面这段代码是在 类的内部 访问事件

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 适合开发阶段测试,但发布时一般不推荐使用