From 8b9f8463037ff29768b2bfb4e7d78aa4dd6dc2c3 Mon Sep 17 00:00:00 2001 From: shangfengh <3495281661@qq.com> Date: Fri, 26 May 2023 17:18:19 +0800 Subject: [PATCH] perf: :lock: add a lock for the bgm --- logic/GameClass/GameObj/Character/Character.cs | 17 +++++++---------- 1 file changed, 7 insertions(+), 10 deletions(-) diff --git a/logic/GameClass/GameObj/Character/Character.cs b/logic/GameClass/GameObj/Character/Character.cs index 77280bd..7cf40c6 100644 --- a/logic/GameClass/GameObj/Character/Character.cs +++ b/logic/GameClass/GameObj/Character/Character.cs @@ -141,23 +141,20 @@ namespace GameClass.GameObj }*/ #endregion #region 感知相关的基本属性及方法 - private Dictionary bgmDictionary = new(); + private readonly object bgmLock = new(); + private Dictionary bgmDictionary = new() { { BgmType.GhostIsComing, 0 }, { BgmType.StudentIsApproaching, 0 }, { BgmType.GeneratorIsBeingFixed, 0 } }; public Dictionary BgmDictionary { - get => bgmDictionary; - private set + get { - lock (gameObjLock) - { - bgmDictionary = value; - } + lock (bgmLock) + return bgmDictionary; } } public void AddBgm(BgmType bgm, double value) { - if (BgmDictionary.ContainsKey(bgm)) - BgmDictionary[bgm] = value; - else BgmDictionary.Add(bgm, value); + lock (bgmLock) + bgmDictionary[bgm] = value; } private int alertnessRadius;