怎么做文化传播公司网站江苏有什么网站找工程建设人员

当前位置: 首页 > news >正文

怎么做文化传播公司网站,江苏有什么网站找工程建设人员,网站兼容所有浏览器,网站开发动态定义一个 LoaderManager class#xff0c;用于管理各种资源加载器。它使用了对象池#xff08;Object Pool#xff09;来优化资源加载器的创建和销毁#xff0c;从而提高性能 举例定义一个 PrefabLoader –[[Desc: 封装AAS的接口#xff0c;加载Prefab –]]—alias Pre…定义一个 LoaderManager class用于管理各种资源加载器。它使用了对象池Object Pool来优化资源加载器的创建和销毁从而提高性能 举例定义一个 PrefabLoader –[[Desc: 封装AAS的接口加载Prefab –]]—alias PrefabLoader.CompleteDelegate fun(obj:table, l:PrefabLoader) | fun(l:PrefabLoader)—class PrefabLoader : BaseLoader —field result CS.UnityEngine.GameObject —field callback PrefabLoader.CompleteDelegate local PrefabLoader SimpleClassUtil:class(require Topjoy.Engine.Resources.BaseLoader)PrefabLoader.intType CS.Topjoy.Base.ResourceManagement.ResourcesUtil.TypeInts.GameObject—overload fun(parent:CS.UnityEngine.Transform): CS.UnityEngine.GameObject | CS.UnityEngine.Object —overload fun(): CS.UnityEngine.GameObject | CS.UnityEngine.Object —param parent CS.UnityEngine.Transform —param worldStay boolean 默认false —return CS.UnityEngine.GameObject | CS.UnityEngine.Object function PrefabLoader:instantiate(parent, worldStay)if self.result thenif parent thenreturn CS.UnityEngine.GameObject.Instantiate(self.result, parent, worldStaytrue)elsereturn CS.UnityEngine.GameObject.Instantiate(self.result)endend endreturn PrefabLoader设计思路 引入了各种资源加载器如AssetLoader、PrefabLoader等这些加载器负责加载不同类型的资源。 initialize方法调用onInit方法进行初始化。onInit方法中首先获取资源管理器实例然后初始化各种资源加载器池每个池子使用TablePool来管理对象池。 PrefabLoader为例创建了一个对象池池子大小为16。当需要新的PrefabLoader实例时会调用传入的函数创建一个新的PrefabLoader对象并设置其释放函数为self._assetPool:releaseObj(1) loadAssetAsync方法用于异步加载资源。它从对象池中获取一个PrefabLoader实例初始化它并调用其loadAsync方法进行异步加载。 release方法用于释放所有资源加载器池并清理资源管理器实例。
注意事项 对象池的使用通过对象池管理资源加载器可以减少对象的频繁创建和销毁提高性能。异步加载资源加载方法如loadAssetAsync都是异步的可以避免阻塞主线程。资源管理器使用CS.Topjoy.Base.ResourceManagement.ResourceManager来管理资源加载确保资源加载的一致性和效率。 —class LoaderManager local LoaderManager SimpleClassUtil:class()local AssetLoader require Topjoy.Engine.Resources.AssetLoader local PrefabLoader require Topjoy.Engine.Resources.PrefabLoader local MaterialLoader require Topjoy.Engine.Resources.MaterialLoader local TextureLoader require Topjoy.Engine.Resources.TextureLoader local TextAssetLoader require Topjoy.Engine.Resources.TextAssetLoader local ListSpriteLoader require Topjoy.Engine.Resources.ListSpriteLoader local MultiAssetLoaders require Topjoy.Engine.Resources.MultiAssetLoaders local SceneLoader require Topjoy.Engine.Resources.SceneLoader local WwiseBankLoader require Topjoy.Engine.Resources.WwiseBankLoader local WalletLoader require Topjoy.Engine.Resources.Wallet.LoaderWalletfunction LoaderManager:initialize()self:onInit() endfunction LoaderManager:onInit()self._resourceManager CS.Topjoy.Base.ResourceManagement.ResourceManager.Instanceself._assetPool TablePool:new(16, function()local loader AssetLoader:new()loader.rlsFunc function(l)self._assetPool:releaseObj(l)endreturn loaderend)self._prefabPool TablePool:new(16, function()local loader PrefabLoader:new()loader.rlsFunc function(l)self._prefabPool:releaseObj(l)endreturn loaderend)self._materialPool TablePool:new(16, function()local loader MaterialLoader:new()loader.rlsFunc function(l)self._materialPool:releaseObj(l)endreturn loaderend)self._texturePool TablePool:new(16, function()local loader TextureLoader:new()loader.rlsFunc function(l)self._texturePool:releaseObj(l)endreturn loaderend)self._textAssetPool TablePool:new(16, function()local loader TextAssetLoader:new()loader.rlsFunc function(l)self._textAssetPool:releaseObj(l)endreturn loaderend)self._listSpritePool TablePool:new(16, function()local loader ListSpriteLoader:new()loader.rlsFunc function(l)self._listSpritePool:releaseObj(l)endreturn loaderend)self._multiAssetsPool TablePool:new(16, function()local loader MultiAssetLoaders:new()loader.rlsFunc function(l)self._multiAssetsPool:releaseObj(l)endreturn loaderend)self._scenePool TablePool:new(16, function()local loader SceneLoader:new()loader.rlsFunc function(l)self._scenePool:releaseObj(l)endreturn loaderend)self._wwiseBankPool TablePool:new(4, function()local loader WwiseBankLoader:new()loader.rlsFunc function(l)self._wwiseBankPool:releaseObj(l)endreturn loaderend)self._walletPool TablePool:new(16,function ()local loader WalletLoader:new()loader.rlsFunc function(l)self._walletPool:releaseObj(l)endreturn loaderend) endfunction LoaderManager:release()self._resourceManager nilLogger.print(LoaderManager:release)self._assetPool:release()self._prefabPool:release()self._materialPool:release()self._texturePool:release()self._textAssetPool:release()self._listSpritePool:release()self._multiAssetsPool:release()self._scenePool:release()self._wwiseBankPool:release()self._walletPool:release() end—param path string —return AssetLoader function LoaderManager:newAssetLoader(path)local loader self._assetPool:getObj()loader:init(path)return loader end—param path string —param obj table 回调的self参数可为nil —param data any loader的附加参数可通过loader.data获取 —param callback AssetLoader.CompleteDelegate —return AssetLoader function LoaderManager:loadAssetAsync(path, callback, obj, data)—type AssetLoaderlocal loader self._assetPool:getObj()loader:init(path)loader:loadAsync(callback, obj, data)return loader end—param path string —return PrefabLoader function LoaderManager:newPrefabLoader(path)local loader self._prefabPool:getObj()loader:init(path)return loader end—param path string —param obj table 回调的self参数可为nil —param data any loader的附加参数可通过loader.data获取 —param callback PrefabLoader.CompleteDelegate —return PrefabLoader function LoaderManager:loadPrefabAsync(path, callback, obj, data)—type PrefabLoaderlocal loader self._prefabPool:getObj()loader:init(path)loader:loadAsync(callback, obj, data)return loader end—param path string —return MaterialLoader function LoaderManager:newMaterialLoader(path)local loader self._materialPool:getObj()loader:init(path)return loader end—param path string —param obj table 回调的self参数可为nil —param data any loader的附加参数可通过loader.data获取 —param callback MaterialLoader.CompleteDelegate —return MaterialLoader function LoaderManager:loadMaterialAsync(path, callback, obj, data)—type MaterialLoaderlocal loader self._materialPool:getObj()loader:init(path)loader:loadAsync(callback, obj, data)return loader end—param path string —return TextureLoader function LoaderManager:newTextureLoader(path)local loader self._texturePool:getObj()loader:init(path)return loader end—param path string —param obj table 回调的self参数可为nil —param data any loader的附加参数可通过loader.data获取 —param callback TextureLoader.CompleteDelegate —return TextureLoader function LoaderManager:loadTextureAsync(path, callback, obj, data)—type TextureLoaderlocal loader self._texturePool:getObj()loader:init(path)loader:loadAsync(callback, obj, data)return loader end—param path string —return TextAssetLoader function LoaderManager:newTextAssetLoader(path)local loader self._textAssetPool:getObj()loader:init(path)return loader end—param path string —param obj table 回调的self参数可为nil —param data any loader的附加参数可通过loader.data获取 —param callback TextAssetLoader.CompleteDelegate —return TextAssetLoader function LoaderManager:loadTextAssetAsync(path, callback, obj, data)—type TextAssetLoaderlocal loader self._textAssetPool:getObj()loader:init(path)loader:loadAsync(callback, obj, data)return loader end—param path string —return ListSpriteLoader function LoaderManager:newListSpriteLoader(path)local loader self._listSpritePool:getObj()loader:init(path)return loader end—param path string —param obj table 回调的self参数可为nil —param data any loader的附加参数可通过loader.data获取 —param callback ListSpriteLoader.CompleteDelegate —return ListSpriteLoader function LoaderManager:loadListSpriteAsync(path, callback, obj, data)—type ListSpriteLoaderlocal loader self._listSpritePool:getObj()loader:init(path)loader:loadAsync(callback, obj, data)return loader end—param callback MultiAssetLoaders.CompleteDelegate —return MultiAssetLoaders function LoaderManager:loadMultiAssetAsync(callback, obj, data, …)—type MultiAssetLoaderslocal loader self._multiAssetsPool:getObj()loader:init(…)loader:loadAsync(callback, obj, data)return loader end—param callback SceneLoader.CompleteDelegate —return SceneLoader function LoaderManager:loadSceneAsync(path, callback, obj, data)—type SceneLoaderlocal loader self._scenePool:getObj()loader:init(path)loader:loadAsync(callback, obj, data)return loader end—param callback WwiseBankLoader.CompleteDelegate —return WwiseBankLoader function LoaderManager:newWwiseBankLoader(path)—type SceneLoaderlocal loader self._wwiseBankPool:getObj()loader:init(path)return loader end—param owner 传self —return LoaderWallet function LoaderManager:newLoaderWallet(owner)local loader self._walletPool:getObj()loader:setOwner(owner)return loader end—param maxExecute number 最大同时异步加载数量 —param maxComplete number 最大同帧回调数量 —return CS.Topjoy.Base.ResourceManagement.OperationHandles.OperationQueue function LoaderManager:newLoaderQueue(maxExecute, maxComplete)local queue self._resourceManager:NewOperationQueue(maxExecute, maxComplete)return queue end—param queue CS.Topjoy.Base.ResourceManagement.ResourceManager function LoaderManager:destroyLoaderQueue(queue)self._resourceManager:DestroyOperationQueue(queue) endreturn LoaderManager