using UnityGameFramework.Runtime; namespace SepCore.CustomComponent { /// /// 单局共享随机组件。 /// 种子由局外(战备/部署界面玩家输入)带入,进入单局时初始化; /// 地图生成、物资点、敌人 AI、逃跑判定和敌人掉落依次消费同一个随机源, /// 战斗只沿用该随机源,不创建战斗私有随机源。 /// 对应 Docs/GameDesign/03_RunExploration.md 的随机生成器约定。 /// public class RandomComponent : GameFrameworkComponent { private int _seed; private IRunRandomSource _random; /// /// 获取本局随机种子;未开始单局时为 0。 /// public int Seed => _seed; /// /// 获取本局共享随机源;未开始单局时为 null。 /// public IRunRandomSource Random => _random; /// /// 开始一局新的单局:使用局外带入的种子初始化共享随机源。 /// /// 本局随机种子。 public void BeginRun(int seed) { _seed = seed; _random = new RunRandomSource(seed); } /// /// 结束当前单局,清空种子与随机源。 /// public void EndRun() { _seed = 0; _random = null; } } }