Advertisement
Qugurun

Defold OOP

Dec 20th, 2022 (edited)
1,262
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 1.50 KB | None | 0 0
  1. -- подключение
  2. -- *.render_script
  3. local framework = require ("assets.addons.framework")
  4.  
  5.  
  6. function init(self)
  7.     // другой код
  8.  
  9.     go = framework.init(go)
  10. end
  11.  
  12. --=====================================================
  13. --framework.lua
  14. local M = {}
  15.  
  16. -------------------------------------------------------
  17. local mt = {}
  18. -- setter
  19. function mt.__newindex( self, index, value )
  20.     -- положение
  21.     if index == 'x' and type(value) == 'number' then
  22.         self.set(".", "position.x", value)
  23.     elseif index == 'y' and type(value) == 'number' then
  24.         self.set(".","position.y", value)
  25.     else
  26.         rawset( self, index, value )
  27.     end
  28. end
  29.  
  30. -------------------------------------------------------
  31. --getter
  32. function mt.__index( self, index )
  33.     -- положение
  34.     if index == 'x' then
  35.       return self.get(".", "position.x")
  36.     elseif index == 'y' then
  37.       return self.get(".", "position.y")
  38.     else
  39.         return rawget( self, index )
  40.     end
  41. end
  42. -------------------------------------------------------
  43.  
  44. function M.init(object)
  45.     object = setmetatable(object, mt)
  46.     return object
  47. end
  48.  
  49. return M
  50.  
  51. --=====================================================
  52.  
  53. --Теперь в любом игровом объекте можно получать или устанавливать положение по X и Y так:
  54.  
  55. go.x = 100
  56. go.y = 100
  57.  
  58. --или поменять текущее положение на + 100 по X и Y
  59.  
  60. go.x = go.x + 100
  61. go.y = go.y + 100
  62.  
  63. print(go.x, go.y) -- > 200,200
  64.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement