随笔分类 -  C#MonoGame

世界坐标是什么?为什么要把世界坐标转换为屏幕坐标?
摘要:说得非常好!这是游戏开发中非常核心的概念,理解它们对你后续开发至关重要。 什么是世界坐标 (World Coordinates) 想象一下你有一张巨大的世界地图铺在桌子上。 绝对位置:世界坐标就是这个巨大地图上的绝对坐标。比如,北京在这个地图上的某个固定位置 (X₁, Y₁),上海在另一个固定位置 阅读全文

posted @ 2025-09-03 14:26 C#我喜欢 阅读(84) 评论(0) 推荐(0)

在让敌人移动的时候 为什么要有方向、实际速度和位置
摘要://移动属性 public Vector2 Velocity { get; set; } //默认速度 public float Speed { get; set; } = 200f; //方向 public Vector2 Direction { get; set; } //引用到实体的位置 pu 阅读全文

posted @ 2025-08-27 11:47 C#我喜欢 阅读(25) 评论(1) 推荐(0)

GUM UI 锚定和停靠 相关知识点
摘要:最近在学习ui相关知识点 在锚定 和 停靠的地方搞混了 一个是非绝对值随着父容器变大或者变小 而改变位置或者大小 一个是直接填充左侧 或者 右侧 上下 等等 我问的ai 觉得ai回答的很全面 现在学习代码的门槛降低了一些 在 UI 布局中,锚定(Anchoring) 和 停靠(Docking) 是两 阅读全文

posted @ 2025-08-19 16:25 C#我喜欢 阅读(37) 评论(0) 推荐(0)

MonoGame SpriteFont 字体类 知识点
摘要:详细解释代码 float scoreTextYOrigin = _font.MeasureString("Score").Y * 0.5f; _scoreTextOrigin = new Vector2(0, scoreTextYOrigin); 代码功能解析: 测量文本高度: _font.Meas 阅读全文

posted @ 2025-08-05 22:06 C#我喜欢 阅读(40) 评论(0) 推荐(0)

C#析构函数 处理非托管资源
摘要:在 C# 中,析构函数(也称为终结器)是资源管理的关键部分,特别是在处理非托管资源时。让我们深入分析 ~AudioController() => Dispose(false); 这行代码的设计意义: 1. 析构函数的基本作用 ~AudioController() => Dispose(false); 阅读全文

posted @ 2025-08-04 21:01 C#我喜欢 阅读(41) 评论(0) 推荐(0)

MonoGame管理音频的主要三个类
摘要:在 MonoGame 的音频系统中,Song、SoundEffect 和 SoundEffectInstance 是三个核心类,它们有明确的职责分工和使用场景。以下是它们的详细区别: 1. SoundEffect (音效) 定位:短音频资源容器 特点: 存储短音频数据(通常 < 10秒),如爆炸声、 阅读全文

posted @ 2025-08-04 16:47 C#我喜欢 阅读(24) 评论(0) 推荐(1)

MonoGame音频处理
摘要:音效SoundEffect 类处理短音频剪辑,例如: 碰撞声音。 玩家动作反馈(跳跃、射击等)。 UI 交互(按钮点击、菜单导航)。 环境效果(脚步声、环境声音)。 音效的主要特征是: 完全加载到内存中以便快速访问 可以同时播放多个实例: 移动平台最多可以同时播放 32 种声音。 桌面平台最多可同时 阅读全文

posted @ 2025-07-31 21:14 C#我喜欢 阅读(36) 评论(0) 推荐(0)

《碰撞问题》碰撞法线,用于处理物理碰撞和反射效果
摘要:源码: //为敌人创建一个边界圈 Circle batBounds = new Circle( (int)(newBatPosition.X + (_bat.Width * 0.5f)), (int)(newBatPosition.Y + (_bat.Height * 0.5f)), (int)(_ 阅读全文

posted @ 2025-07-29 21:06 C#我喜欢 阅读(39) 评论(0) 推荐(0)

《碰撞问题》基于屏幕大小及敌人的宽高,生成抽象网格,根据网格让敌人在网格中随机生成
摘要:让我彻底重写关于"将屏幕划分为蝙蝠大小的网格"这一部分的解释,并逐行详细说明整个碰撞处理逻辑: 碰撞后蝙蝠重定位的完整解析 if (slimeBounds.Intersects(batBounds)) { // 1. 计算屏幕网格划分 int totalColumns = GraphicsDevic 阅读全文

posted @ 2025-07-29 20:14 C#我喜欢 阅读(14) 评论(0) 推荐(0)

《碰撞问题》在防止player 出屏幕范围的时候 为什么>屏幕下面 和 右面 都要减掉 宽高?
摘要:if (slimeBounds.Left < screenBounds.Left) { _slimePosition.X = screenBounds.Left; } else if (slimeBounds.Right > screenBounds.Right) { _slimePosition. 阅读全文

posted @ 2025-07-29 20:05 C#我喜欢 阅读(17) 评论(1) 推荐(0)

导航