提交 f6a64c4b 编写于 作者: T tanghai

修复所有Disposer对象不能删除的bug

上级 41d4c399
using System;
using Base;
using Model;
using MongoDB.Bson;
using NLog;
namespace App
......
......@@ -3,10 +3,6 @@
[EntityEvent(typeof(RobotComponent))]
public class RobotComponent : Component
{
private void Awake()
{
}
public override void Dispose()
{
if (this.Id == 0)
......
......@@ -7,7 +7,7 @@ namespace Base
{
public static class Game
{
private static readonly HashSet<Disposer> disposers = new HashSet<Disposer>();
private static HashSet<Disposer> disposers;
private static EntityEventManager entityEventManager;
......@@ -21,6 +21,14 @@ namespace Base
}
}
public static HashSet<Disposer> Disposers
{
get
{
return disposers ?? (disposers = new HashSet<Disposer>());
}
}
public static void CloseScene()
{
scene.Dispose();
......@@ -29,11 +37,12 @@ namespace Base
public static void ClearDisposers()
{
foreach (Disposer disposer in disposers)
foreach (Disposer disposer in Disposers)
{
disposer.Dispose();
}
disposers.Clear();
disposers = null;
}
public static EntityEventManager EntityEventManager
......@@ -47,7 +56,7 @@ namespace Base
public static string DisposerInfo()
{
var info = new Dictionary<string, int>();
foreach (Disposer disposer in disposers)
foreach (Disposer disposer in Disposers)
{
if (info.ContainsKey(disposer.GetType().Name))
{
......
......@@ -7,15 +7,18 @@ namespace Model
{
protected Disposer(): base(IdGenerater.GenerateId())
{
Game.Disposers.Add(this);
}
protected Disposer(long id): base(id)
{
Game.Disposers.Add(this);
}
public virtual void Dispose()
{
this.Id = 0;
Game.Disposers.Remove(this);
}
public override void BeginInit()
......@@ -24,6 +27,7 @@ namespace Model
public override void EndInit()
{
Game.Disposers.Add(this);
}
}
}
\ No newline at end of file
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册