我正在使用unity5.3.3,我想知道如何从资产包中获取资产,其名称相同但保存在不同的文件夹中.我的AssetBundle文件夹按以下方式设置:
MyAssets -> this Folder is packed as an AssetBundle
-ThemeOne(folder)
- Logo.png
-ThemerTwo(folder)
- Logo.Png
Run Code Online (Sandbox Code Playgroud)
当我这样做AssetBundle.LoadAssetAsync("Logo")
.我结束了在第一个(ThemeOne)文件夹中获取徽标.那么如何访问其他文件夹中的文件?
我刚刚创建了一个示例项目,以便您可以查看它.检查Folder Assets\AssetBundleSample\SampleAssets\Theme和脚本LoadAssets
我想这是一种代码审查,但这是我对生产者/消费者模式的实现。我想知道的是,是否会出现ReceivingThread()
orSendingThread()
方法中的 while 循环停止执行的情况。请注意,它EnqueueSend(DataSendEnqeueInfo info)
是从多个不同线程调用的,我可能无法在这里使用任务,因为我肯定必须在单独的线程中使用命令。
private Thread mReceivingThread;
private Thread mSendingThread;
private Queue<DataRecievedEnqeueInfo> mReceivingThreadQueue;
private Queue<DataSendEnqeueInfo> mSendingThreadQueue;
private readonly object mReceivingQueueLock = new object();
private readonly object mSendingQueueLock = new object();
private bool mIsRunning;
EventWaitHandle mRcWaitHandle;
EventWaitHandle mSeWaitHandle;
private void ReceivingThread()
{
while (mIsRunning)
{
mRcWaitHandle.WaitOne();
DataRecievedEnqeueInfo item = null;
while (mReceivingThreadQueue.Count > 0)
{
lock (mReceivingQueueLock)
{
item = mReceivingThreadQueue.Dequeue();
}
ProcessReceivingItem(item);
}
mRcWaitHandle.Reset();
}
}
private void SendingThread()
{
while (mIsRunning)
{
mSeWaitHandle.WaitOne(); …
Run Code Online (Sandbox Code Playgroud) c# multithreading producer-consumer blockingcollection tpl-dataflow
1)我有一个名为SocketServer的项目,其中有一个Class Room,这个项目是一个编译的exe,也可以编译为DLL.
2)在另一个名为MyGame的项目中,有一个名为MyAwesomeGame的类,我需要在其中执行以下操作:
public class MyAwesomeGame
{
public Init(Room room)
{
//I can get data from Room
}
}
Run Code Online (Sandbox Code Playgroud)
现在,MyGame Project被编译成MyGame.DLL,并放置在相对于SocketServer.exe的某个地方,SocketServer.exe在运行时加载MyGame.DLL并实例化MyAwesomeGame类并调用Method Init并将room作为参数传递.代码是SocketServer项目是这样的:
public class Room
{
private InstantiateGameRoom()
{
//Load External MyGame.DLL Assembly
Task<MyAwesomeGame> task = Task<MyAwesomeGame>.Factory.StartNew(() => (MyAwesomeGame)Activator.CreateInstance(classType, new object[] { this }));
MyAwesomeGame instance = task.result;
instance.init(this);
}
}
Run Code Online (Sandbox Code Playgroud)
所以我的问题是我如何能得到类的参考房间在MyGame项目?我应该添加我的SocketServer项目的引用吗?如果我这样做,它会不会被我的MyGame.dll编译?
ps:我还打算将socketserver.dll作为API分发给第三方用户.