C# CLR
CLR 是 Common Language Runtime 的缩写,翻译为 公共语言运行时。它是 .NET 框架的核心组件,负责执行由 .NET 编程语言(如 C#、VB.NET、F# 等)编写的程序。 CLR 的主要功能: 代码执行:CLR 是 .NET 程序的执行环境,它将中间语言(IL)代码转换为机器代码,使程序能够在不同的操作系统和硬件平台上运行。 内存管理:CLR 提供了自动垃圾回收功能(GC,Garbage Collection),自动回收不再使用的对象所占用的内存,减少内存泄漏问题。 类型安全:CLR 确保程序的类型安全,防止程序访问未授权的内存或类型错误。 异常处理:CLR 提供了统一的异常处理机制,确保不同语言的程序能够一致地处理错误。 跨语言互操作性:CLR 使得不同编程语言编写的代码能够互操作。例如,C# 编写的代码可以调用 VB.NET 编写的类和方法。 安全性:CLR 提供了多层次的安全性检查(例如代码访问安全性,CAS)来防止恶意代码的执行。 CLR 主要包含的部分: JIT 编译器(Just-in-Time Compiler):CLR...
Unity ScriptableObject
官方文档 在 Unity 中,ScriptableObject 是一种特殊的对象,它允许你在 Unity 编辑器中创建 可序列化 的 自定义数据容器,并且能够在多个场景、多个游戏对象之间共享数据。ScriptableObject 是继承自 UnityEngine.ScriptableObject 类的一种对象,通常用于存储数据,而不是存储行为(功能)。它是为了减少对 MonoBehaviour 的依赖,提升项目的灵活性和性能。 1. 基本概念ScriptableObject 并不像普通的 MonoBehaviour 那样附加到 GameObject 上,而是独立的、非场景物体的对象。它可以在项目中作为资产(Asset)保存,并且多个实例之间可以共享同一份数据,避免了重复存储。 普通对象(如 MonoBehaviour)通常与场景中的对象(GameObject)绑定,每个 GameObject 上可以有多个组件(Component)。 ScriptableObject 是独立的、与场景无关的对象,它可以作为一个单独的资源在项目中保存和使用。 2....
Unity 托管代码与非托管代码
你提到的“托管代码”与“与托管代码”似乎是对术语的重复或笔误。这里我会解释 托管代码 和 非托管代码(通常是与托管代码相对的概念),以及它们的区别。 1. 托管代码(Managed Code)托管代码 是由 .NET 运行时(如 CLR,即公共语言运行时)托管和管理的代码。也就是说,托管代码的执行是在 CLR 环境中进行的,CLR 提供了内存管理、异常处理、垃圾回收、安全性等功能。这意味着开发者无需自己管理内存分配和释放,CLR 会负责这些操作。 特点: 内存管理:托管代码的内存管理是由垃圾回收器(GC,Garbage Collector)自动处理的。 类型安全:CLR 会确保类型的安全性,例如防止类型转换错误、非法内存访问等。 自动垃圾回收:CLR 会定期回收不再使用的内存空间,避免内存泄漏。 安全性:CLR 会进行代码的安全检查,确保代码不会执行恶意操作。 平台独立性:托管代码一般是通过 中间语言(IL,Intermediate Language) 编译的,这样可以通过不同平台上的 CLR 实现执行。 托管代码的一个例子就是 C# 中编写的代码,它会被编译成...
Unity 程序集
常见的四种程序集下面是 Unity 中的预定义程序集(Predefined Assemblies)、默认创建的程序集(Default Assemblies)、自定义程序集(Custom Assemblies)和 预编译程序集(Precompiled Assemblies)四者的关系与区别的对比表格: 特性 预定义程序集 (Predefined Assemblies) 默认创建的程序集 (Default Assemblies) 自定义程序集 (Custom Assemblies) 预编译程序集 (Precompiled Assemblies) 定义 Unity 引擎提供的核心程序集,包含 Unity 引擎功能 Unity 自动创建的程序集,包含项目的用户代码 开发者手动创建和管理的程序集,通常通过 .asmdef 文件创建 编译后的程序集文件,用于加速编译,减少重新编译时间 主要内容 UnityEngine.dll、UnityEditor.dll、mscorlib.dll...
团结引擎
原文 一站式微信小游戏解决方案基于WebGL,团结引擎针对微信小游戏开发了专属的目标平台。您可以轻松将其他平台的游戏转换成微信小游戏,覆盖更广阔的玩家群体。 IL2CPP 内存和性能优化,专项渲染/异常优化,加强版的 Profiler 工具,更有一站式游戏云服务解决方案原生集成了对微信小游戏的支持,助您的作品在性能和体验上更进一步。不仅如此,微信小游戏解决方案还可以实现项目首包大小自动精简、按需获取项目资产等功能。 借助团结引擎的众多功能及特性,您可以轻松实现创意想法,并创建出独具个性的微信小游戏。 一站式智能座舱解决方案团结引擎车机版不仅支持HMI Android、QNX、Embedded...
Unity UWA & UWP
UWA(Universal Windows App)和 UWP(Universal Windows Platform)之间有密切的关系,但两者不是完全相同的概念。理解它们的关系和区别有助于澄清它们在 Windows 应用开发中的角色。 1. UWA(Universal Windows App) 定义:UWA 是一个 应用类型,即特定于 Windows 10 及以上版本的应用,设计目标是能够在不同 Windows 10 设备(如 PC、平板、手机、Xbox、HoloLens 等)之间无缝运行。UWA 强调的是应用本身的跨设备能力。 用途:它代表了通过 Windows Store 分发的应用,支持在多种设备上安装并运行,旨在让开发者一次编写代码,适配不同类型的 Windows 设备。 2. UWP(Universal Windows Platform) 定义:UWP 是 开发平台 或 应用平台,它是 Windows 10 的一种应用开发框架,提供了一个统一的 API、SDK 和工具集,支持开发能够在所有 Windows 10 设备上运行的应用。UWP...
Unity 开发非游戏应用
Unity 是一个强大的跨平台开发工具,虽然它主要用于游戏开发,但也可以用于开发普通软件(如工具类应用、展示应用或数字孪生系统)。如果目标是使用 Unity 开发普通软件,为了减少项目的体积和复杂度,以及优化性能,可以有选择地移除或禁用一些与普通软件无关的功能和模块。 以下是可以移除或优化的内容: 1. 移除与游戏开发相关的功能a. 不需要的模块和功能Unity 包含许多针对游戏开发的模块,普通软件通常用不上,可以在 Unity Hub 中的项目设置中禁用: Physics(物理模块) 如果不需要物理模拟,可以禁用 2D 和 3D 物理引擎(如 Rigidbody 和 Collider)。 AI Navigation(导航网格) 如果不需要路径寻路功能,可以禁用该模块。 Animation(动画模块) 如果没有复杂的动画需求,可以禁用 Mecanim 动画系统。 Particle System(粒子系统) 如果应用不需要特效,可以移除相关模块。 b. 项目中未使用的脚本和资源 移除示例资源和默认导入的...
Unity 环境安装
unity 模块添加官方解释 这段官方解释详细说明了为什么 “Add Modules” 按钮可能缺失以及如何通过手动方式修复。以下是总结和关键要点: 问题原因 Unity Hub 使用 modules.json 文件来记录某个 Unity 编辑器版本的模块安装状态。 如果该文件缺失或未正确生成,Unity Hub 就无法知道有哪些模块已安装,也无法显示 “Add Modules” 按钮。 如果编辑器是通过非 Unity Hub 安装的(例如手动下载解压安装),默认没有 modules.json 文件,Unity Hub 将无法管理该版本的模块。所以我们安装unity时hub上可能没有列出我们需要的版本,但是我们可以去官网找到对应的版本链接至UnityHub 这样就相当于使用UnityHub下载,支持模块管理。 解决方案如果你的 Unity 安装缺失 “Add Modules” 按钮,可以尝试以下步骤修复: 方法一:手动下载模块 选版本 archive releases,找到组件对应组件模块,如下: Component installers -> ...
HybridCLR 笔记
hybridclr Package手册最佳实践不支持特性AOT泛型热更新程序集的 auto reference 如果你们项目把Assembly-CSharp作为AOT程序集,强烈建议关闭热更新程序集的auto reference选项。因为Assembly-CSharp是最顶层assembly,开启此选项后会自动引用剩余所有assembly,包括热更新程序集,很容易就出现失误引用热更新程序集导致打包失败的情况。 这段话的核心是提醒开发者避免在 Unity 项目中意外地让 Assembly-CSharp(默认的主程序集)引用到热更新程序集,以防止打包或运行时出现问题。以下是详细解释: 1. 什么是 auto reference 选项? Unity 中的 auto reference 是一个程序集配置选项,控制是否让其他程序集(如 Assembly-CSharp)自动引用当前程序集。 默认情况下,这个选项是 开启 的,意味着该程序集会被自动引用,无需手动配置。 2. Assembly-CSharp 是什么? Assembly-CSharp 是 Unity...
Unity 渲染管线选择
选择渲染模式的建议 内置渲染管线 (Built-In Render Pipeline) 优点:稳定、易用,适合新手和简单项目。 缺点:缺乏现代渲染特性,性能调优复杂。 适用场景:小型项目、快速原型开发或简单的 2D/3D 游戏。 通用渲染管线 (URP) 优点:支持跨平台优化,性能优良,现代化工具支持(如 Shader Graph)。 缺点:功能不如 HDRP 完善,可能需要手动迁移内置资源。 适用场景:中小型 2D/3D 游戏或移动平台开发。 高清渲染管线 (HDRP) 优点:画质卓越,支持高级渲染效果(如实时光线追踪)。 缺点:硬件需求高,不适合低端设备。 适用场景:高质量 3D 游戏、电影制作或建筑可视化等。 根据项目的规模、目标平台和渲染需求选择合适的模板,有助于优化开发体验和性能。