static int LoadAssetSync(IntPtr L)
    {
        try
        {
            int count = LuaDLL.lua_gettop(L);

            if (count == 3)
            {
                Framework.ResourceMgr obj  = (Framework.ResourceMgr)ToLua.CheckObject <Framework.ResourceMgr>(L, 1);
                Framework.AssetType   arg0 = (Framework.AssetType)ToLua.CheckObject(L, 2, typeof(Framework.AssetType));
                string arg1 = ToLua.CheckString(L, 3);
                Framework.SyncAssetProxy o = obj.LoadAssetSync(arg0, arg1);
                ToLua.PushObject(L, o);
                return(1);
            }
            else if (count == 4)
            {
                Framework.ResourceMgr obj  = (Framework.ResourceMgr)ToLua.CheckObject <Framework.ResourceMgr>(L, 1);
                Framework.AssetType   arg0 = (Framework.AssetType)ToLua.CheckObject(L, 2, typeof(Framework.AssetType));
                string arg1 = ToLua.CheckString(L, 3);
                bool   arg2 = LuaDLL.luaL_checkboolean(L, 4);
                Framework.SyncAssetProxy o = obj.LoadAssetSync(arg0, arg1, arg2);
                ToLua.PushObject(L, o);
                return(1);
            }
            else
            {
                return(LuaDLL.luaL_throw(L, "invalid arguments to method: Framework.ResourceMgr.LoadAssetSync"));
            }
        }
        catch (Exception e)
        {
            return(LuaDLL.toluaL_exception(L, e));
        }
    }
Exemplo n.º 2
0
        /// <summary>
        /// 同步从AssetBundle加载资源;
        /// </summary>
        /// <param name="assetType">资源类型</param>
        /// <param name="assetName">资源名字</param>
        /// <param name="isUsePool">资源是否使用对象池</param>
        /// <returns>同步代理</returns>
        public SyncAssetProxy LoadAssetSync(AssetType assetType, string assetName, bool isUsePool)
        {
            SyncAssetProxy proxy = PoolMgr.Instance.GetCsharpObject <SyncAssetProxy>();

            proxy.InitProxy(assetType, assetName, isUsePool);

            Object      ctrl        = null;
            AssetBundle assetBundle = AssetBundleMgr.Instance.LoadAssetBundleSync(assetType, assetName);

            if (assetBundle != null)
            {
                var name = Path.GetFileNameWithoutExtension(assetName);
                ctrl = assetBundle.LoadAsset(name);
            }
            if (ctrl == null)
            {
                LogHelper.PrintError(string.Format("[ResourceMgr]LoadAssetSync Load Asset failure" +
                                                   ",type:{0},name:{1}!", assetType, assetName));
            }
            proxy.OnFinish(ctrl);
            return(proxy);
        }