using ET; namespace ET { [NumericWatcher(NumericType.SkinId)] public class NumericWatcher_SkinId : INumericWatcher { public async ETTask Run(Entity entity, float old, float value) { Log.Info($"@{entity.Id}改变 SkinId:{old} -> {value}"); Unit unit = entity.As(); int skinId = MathHelper.RoundToInt(value); if (skinId == 0) { Log.Error($"skinId == 0 where id = {unit.Id}"); return; } await Game.EventSystem.Publish(new ET.EventType.ChangeSkin { zoneScene = entity.ZoneScene(), Id = unit.Id, skinId = skinId }); unit.RefreshPosition(); await ETTask.CompletedTask; } } }