65 lines
2.1 KiB
C#
65 lines
2.1 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Reflection;
|
|
using UnityEngine.Gonbest.MagicCube;
|
|
|
|
namespace Thousandto.Core.Base
|
|
{
|
|
/// <summary>
|
|
/// 全局数据的一个代理
|
|
/// </summary>
|
|
public static class GonbestGMemoryAccessor
|
|
{
|
|
//读取Float内存块的方法
|
|
private static MethodInfo _allocFloatBlockMethod = null;
|
|
//读取String内存块的方法
|
|
private static MethodInfo _allocStringBlockMethod = null;
|
|
//判断当前是否已经有某个块
|
|
private static MethodInfo _hasBlockMethod = null;
|
|
|
|
static GonbestGMemoryAccessor()
|
|
{
|
|
var t = AssemblyUtils.FindType("Thousandto.Launcher.ExternalLibs.GonbestGMemory");
|
|
if (t != null)
|
|
{
|
|
_allocFloatBlockMethod = AssemblyUtils.GetPublicStaticMethod(t,"AllocFloatBlock");
|
|
_allocStringBlockMethod = AssemblyUtils.GetPublicStaticMethod(t, "AllocStringBlock");
|
|
_hasBlockMethod = AssemblyUtils.GetPublicStaticMethod(t, "HasBlock");
|
|
}
|
|
}
|
|
|
|
//分配Float的内存块
|
|
public static float[] AllocFloatBlock(string key, int maxSize = -1)
|
|
{
|
|
if (_allocFloatBlockMethod != null)
|
|
{
|
|
return _allocFloatBlockMethod.Invoke(null, new object[] { key, maxSize }) as float[];
|
|
}
|
|
return null;
|
|
}
|
|
|
|
//分配字符串的内存块,如果是只读,那么maxSize最好为-1
|
|
public static string[] AllocStringBlock(string key, int maxSize = -1)
|
|
{
|
|
if (_allocStringBlockMethod != null)
|
|
{
|
|
return _allocStringBlockMethod.Invoke(null, new object[] { key, maxSize }) as string[];
|
|
}
|
|
return null;
|
|
}
|
|
|
|
|
|
//判断当前内存块是否有效
|
|
public static bool HasBlock(string key)
|
|
{
|
|
if (_hasBlockMethod != null)
|
|
{
|
|
return (bool)_hasBlockMethod.Invoke(null, new object[] {}) ;
|
|
}
|
|
return false;
|
|
}
|
|
|
|
}
|
|
}
|