源战役客户端
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

69 lines
2.1 KiB

преди 1 месец
  1. --3d rt ui 类
  2. UIRtModelClass = UIRtModelClass or BaseClass(UIPartical)
  3. UIRtModelClass.using_render_texture_list = {}
  4. function UIRtModelClass:__init(go,parent, root, model_data)
  5. self.curr_index = UIRtModelClass.GetRenderTextureIndex()
  6. self.pos_x = 0
  7. self.gameObject = go
  8. self.gameObject.transform.position = Vector3(self.curr_index * 20000,10000, 10000)
  9. self.model_data = model_data
  10. self:SetData(parent,root,model_data)
  11. self:AddEvents()
  12. end
  13. function UIRtModelClass.GetRenderTextureIndex()
  14. local index = 1
  15. while (UIRtModelClass.using_render_texture_list[index]) do
  16. index = index + 1
  17. end
  18. UIRtModelClass.using_render_texture_list[index] = true
  19. return index
  20. end
  21. function UIRtModelClass:__delete()
  22. UIRtModelClass.using_render_texture_list[self.curr_index] = nil-----------------
  23. if self.gameObject then
  24. destroy(self.gameObject, true)
  25. end
  26. if self.rt then
  27. UnityEngine.RenderTexture.ReleaseTemporary(self.rt)
  28. self.rt = nil
  29. end
  30. end
  31. function UIRtModelClass:SetData(parent, root, model_data)
  32. self.camera = self.gameObject.transform:Find("3DUICamera"):GetComponent("Camera")
  33. self.ui_root = self.gameObject.transform:Find("3DUIRoot").gameObject
  34. local root_pos = model_data.root_pos or Vector2(0, 0)
  35. local root_scale = model_data.root_scale or 1
  36. local root_rotation = model_data.root_rotation or Vector3(0, 0, 0)
  37. if root then
  38. local root_trans = root.transform
  39. root:SetActive(true)
  40. root_trans:SetParent(self.ui_root.transform)
  41. self:SetRTUILayer(self.ui_root.transform)
  42. SetLocalScale(root_trans,root_scale, root_scale, root_scale)
  43. SetAnchoredPosition(root_trans, root_pos.x, root_pos.y)
  44. root_trans.localRotation = Quaternion.Euler(root_rotation.x, root_rotation.y, root_rotation.z)
  45. end
  46. self.size = self.size or Vector2(600,360)
  47. if not self.renderSize then
  48. self.renderSize = self.size
  49. end
  50. local temp_x, temp_y = self.size.x, self.size.y
  51. if not self.rt then
  52. self.rt = UnityEngine.RenderTexture.GetTemporary(temp_x, temp_y, 24)
  53. end
  54. self.camera.targetTexture = self.rt
  55. local raw_image = parent:GetComponent("RawImage")
  56. raw_image.texture = self.rt
  57. parent.sizeDelta = self.size
  58. end
  59. function UIRtModelClass:AddEvents()
  60. end