# CSharpLearn **Repository Path**: 3qtoall/c-sharp-learn ## Basic Information - **Project Name**: CSharpLearn - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-07-28 - **Last Updated**: 2026-08-01 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Unity + C#/.NET 游戏全栈学习仓库 这是一个面向资深 Java 游戏开发者的 Unity + C#/.NET 转型学习仓库。项目采用 Monorepo 组织,同时维护两条彼此独立的学习线: - C#/.NET 游戏服务端主线:从语言、异步与并发逐步进入 ASP.NET Core、gRPC、Actor、ECS、MySQL 和 Redis。 - Unity 客户端学习线:从 Unity 2D 编辑器、GameObject/Component 和 MonoBehaviour 生命周期逐步进入完整客户端开发。 详细教学规则和最新进度以 [AGENTS.md](AGENTS.md) 为准,阶段文档入口位于 [docs/README.md](docs/README.md)。 ## 当前环境 | 组件 | 版本或目标 | |---|---| | .NET SDK | `10.0.302`,由 `global.json` 固定 | | 服务端和教学示例 | `net10.0` | | 前后端共享库 | `netstandard2.1` | | Unity | `2022.3.50f1c1` | | Unity 项目类型 | 2D | ## 当前进度 - C#/.NET 主线:阶段 1 已完成,下一阶段进入 ASP.NET Core Generic Host、DI、配置和日志。 - Unity 独立学习线:阶段 U0 进行中,目前保持原进度。 - `Game.Shared.Tests`:现有 5 个测试已通过。 进度会持续变化,请查看 [AGENTS.md 的当前状态](AGENTS.md#5-当前状态)。 ## 仓库结构 ```text c-sharp-learn/ ├── README.md # 面向开发者的仓库入口 ├── AGENTS.md # Codex 教学规则、路线和最新进度 ├── Game.sln # .NET 项目解决方案,不包含 Unity 工程 ├── global.json # 固定 .NET SDK ├── client/ │ └── unity-learn/ # Unity 2022.3.50f1c1 2D 学习项目 ├── server/ │ └── src/Game.Server.Host/ # 当前服务端进程入口 ├── shared/ │ └── src/Game.Shared/ # 面向 Unity 兼容边界的共享代码 ├── tests/ │ └── Game.Shared.Tests/ # 共享库测试 ├── examples/ # C#/.NET 最小可运行教学示例 └── docs/ # C#/.NET 阶段文档 ``` Unity 工程由 Unity Hub 管理,不加入 `Game.sln`。服务端不得引用 `client/`,共享库不得依赖 ASP.NET Core、数据库、Redis 或 Actor 框架。 ## 快速开始:C#/.NET 在仓库根目录执行: ```powershell dotnet --version dotnet restore .\Game.sln dotnet build .\Game.sln --configuration Debug dotnet test .\Game.sln --configuration Debug ``` 运行服务端入口: ```powershell dotnet run --project .\server\src\Game.Server.Host\Game.Server.Host.csproj ``` 运行最近的并发同步示例: ```powershell dotnet run --project .\examples\ConcurrencySynchronizationBasics\ConcurrencySynchronizationBasics.csproj ``` VS Code 调试时按 `Ctrl+Shift+D` 打开“运行和调试”,再从下拉框选择目标配置。`F5` 启动调试,`Ctrl+F5` 无调试运行。 ## 快速开始:Unity 1. 打开 Unity Hub。 2. 选择“打开”或“添加磁盘中的项目”。 3. 选择 `client/unity-learn/`。 4. 使用 Unity `2022.3.50f1c1` 打开。 5. 通过 Console、Game 窗口和 Play Mode 验证学习内容。 Unity 学习文档入口:[client/unity-learn/docs/README.md](client/unity-learn/docs/README.md)。 不要手工编辑或提交 Unity 的 `Library/`、`Temp/`、`Logs/` 和 `obj/` 等生成目录。 ## C#/.NET 示例 | 示例 | 主题 | |---|---| | `CSharpBasics` | 第一个控制台程序与调试 | | `TypeSystemBasics` | 值类型、引用类型、装箱、可空类型 | | `RecordEqualityBasics` | record、不可变性和相等性 | | `PropertyInitializationBasics` | 字段、属性、`init`、`required` | | `InterfaceCapabilityBasics` | 接口、能力组合与多态 | | `GenericCollectionBasics` | 泛型、约束和常用集合 | | `DelegateEventLinqBasics` | 委托、事件、Lambda 和 LINQ | | `ResourceExceptionPatternBasics` | IDisposable、异常、模式匹配和扩展方法 | | `ConcurrencyModelBasics` | Thread、ThreadPool 和 Task | | `AsyncAwaitBasics` | async/await、异常传播和取消 | | `ConcurrencySynchronizationBasics` | 数据竞争、`lock` 和 `Interlocked` | | `SemaphoreSlimBasics` | 异步并发限流、取消与许可归还 | | `ConcurrentDictionaryBasics` | 并发缓存、原子 API 与工厂重复执行边界 | | `ChannelCommandPipelineBasics` | 并发队列、异步生产消费、背压与完成协议 | | `GameLoopThreadOwnershipBasics` | 线程所有权、后台命令与固定 Tick 游戏循环 | | `Stage1BattleService` | 阶段 1 技能加载、伤害计算、Channel 与战斗线程综合链路 | 所有示例都可以使用以下形式运行: ```powershell dotnet run --project .\examples\<项目名>\<项目名>.csproj ``` ## 文档入口 - [C#/.NET 阶段文档索引](docs/README.md) - [阶段 0:环境、Solution 与 Monorepo](docs/stages/00-environment-and-solution.md) - [阶段 1:C# 核心语言与异步](docs/stages/01-csharp-and-async.md) - [Unity 学习文档](client/unity-learn/docs/README.md) - [教学路线与最新进度](AGENTS.md) 教学文档遵循“一阶段一份完整文档”的规则。示例目录主要保存可运行代码,关键代码会添加简洁中文注释,用于说明设计意图、生命周期、线程、异步、资源所有权和性能边界。 ## 生成目录与提交边界 以下目录由工具生成,不应作为源码提交: - .NET:`bin/`、`obj/`、测试结果和发布产物。 - Unity:`Library/`、`Temp/`、`Logs/`、`UserSettings/` 等本地状态。 - IDE:与个人环境绑定的缓存和临时文件。 发布应用时使用 `dotnet publish`,不要直接把普通 `bin/Debug` 当成交付目录。