ResMgr.lua 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116
  1. local ResMgr = class("ResMgr", function()
  2. return ResourceMgr.Instance
  3. end)
  4. function ResMgr:ctor()
  5. self.uiGrayMat = nil
  6. end
  7. function ResMgr:SetGrayMat(mat)
  8. self.uiGrayMat = mat
  9. end
  10. function ResMgr:GetGrayMat()
  11. return self.uiGrayMat
  12. end
  13. function ResMgr:SetFrameQualityMat(mat)
  14. self.uiFrameQualityMat = mat
  15. end
  16. function ResMgr:GetFrameQualityMat()
  17. return self.uiFrameQualityMat or nil
  18. end
  19. function ResMgr:InitCommonMats()
  20. self:LuaLoadAssets(Enum.ResourceType.Material, Constants.CommonMaterialDir, {Constant.UIGrayName}, nil, function (material)
  21. self:SetGrayMat(material)
  22. end)
  23. self:LuaLoadAssets(Enum.ResourceType.Material, Constants.CommonMaterialDir, {Constant.UIFrameQualityName}, nil, function (material)
  24. self:SetFrameQualityMat(material)
  25. end)
  26. end
  27. function ResMgr:LuaLoadAssetGameObject(UIIdx, idx, path, loadType, callback, assetName)
  28. local assetNames = self:AsyncLoadReqInsert(UIIdx, idx, callback, assetName)
  29. if assetNames == false then
  30. return 0
  31. end
  32. if assetNames ~= nil then
  33. local seqId = self:LoadAssetGameObject(path, loadType, AsyncLoadGameObjectResponse, unpack(assetNames))
  34. self:SetAsyncLoadReqSeqId(seqId, assetName)
  35. return seqId
  36. end
  37. end
  38. function ResMgr:LuaLoadAssets(resourceType, assetPath, assetNames, cbOwner, cb)
  39. local seqId = nil
  40. local methodOwner = nil
  41. local method = nil
  42. if Enum.ResourceType.GameObject == resourceType then
  43. methodOwner = ManagerContainer.ResMgr
  44. method = methodOwner.LoadAssetGameObjects
  45. elseif Enum.ResourceType.SingleGameObject == resourceType then
  46. methodOwner = ManagerContainer.ResMgr
  47. method = methodOwner.LoadAssetGameObject
  48. elseif Enum.ResourceType.AnimatorController == resourceType then
  49. methodOwner = ManagerContainer.ResMgr
  50. method = methodOwner.LoadAssetRuntimeAnimatorControllers
  51. elseif Enum.ResourceType.Sprite == resourceType then
  52. methodOwner = ManagerContainer.ResMgr
  53. method = methodOwner.LoadAssetSprites
  54. elseif Enum.ResourceType.SingleSprite == resourceType then
  55. methodOwner = ManagerContainer.ResMgr
  56. method = methodOwner.LoadAssetSprite
  57. elseif Enum.ResourceType.Texture2D == resourceType then
  58. methodOwner = ManagerContainer.ResMgr
  59. method = methodOwner.LoadAssetTexture
  60. elseif Enum.ResourceType.Material == resourceType then
  61. methodOwner = ManagerContainer.ResMgr
  62. method = methodOwner.LoadAssetMaterial
  63. else
  64. LogError("未支持的加载方式,检查一下")
  65. if cbOwner then
  66. cb(cbOwner, nil, seqId, assetPath)
  67. else
  68. cb(nil, seqId, assetPath)
  69. end
  70. return seqId
  71. end
  72. seqId = method(methodOwner, assetPath, ELoadType.OTHER, function(objs, compeletSeqId, asseath, ...)
  73. if cbOwner then
  74. cb(cbOwner, objs, compeletSeqId, assetPath,assetNames, ...)
  75. else
  76. cb(objs, compeletSeqId, assetPath,assetNames, ...)
  77. end
  78. end, unpack(assetNames))
  79. return seqId
  80. end
  81. function ResMgr:SeqIdEquals(seqIdA, seqIdB)
  82. if tostring(seqIdA) == tostring(seqIdB) then
  83. return true
  84. end
  85. return false
  86. end
  87. function ResMgr:LuaFindSpriteByPathAndName(pathName, assetName)
  88. return self:FindSpriteByPathAndName(pathName, assetName)
  89. end
  90. function ResMgr:ClearUIAsyncLoadReqsBySeqId(seqId)
  91. self:UnloadAssetBySeqId(seqId)
  92. end
  93. function ResMgr:Destroy()
  94. self.uiGrayMat = nil
  95. LuaAsyncLoadCache = nil
  96. if tolua.getpeer(self) ~= nil then
  97. tolua.setpeer(self, nil)
  98. end
  99. end
  100. return ResMgr