用unity做网游的同学应该不少,其中一个很蛋疼的问题就是主线程中尤其是UI部分很多实例都是不允许子线程修改的,
那么我们就只有想办法把这些子线程里的数据缓存起来,让主线程自己拿着这些数据该干嘛干嘛去。
直接贴源码:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using UnityEngine;
using System.Threading;
public class EventDispatcher
{
private static EventDispatcher sinstance;
public static EventDispatcher Instance()
{
if (sinstance == null)
{
sinstance = new EventDispatcher();
}
return sinstance;
}
// object m_objLock = new object();
// object m_objLock2 = new object();
public delegate void EventCallback(EventBase eb);
private Dictionary> registedCallbacks = new Dictionary>();
private Dictionary> registedCallbacksPending = new Dictionary>();
private List lPendingEvents = new List();
public void RegistEventListener(string sEventName, EventCallback eventCallback)
{
lock (this)
{
if (!registedCallbacks.ContainsKey(sEventName))
{
regist