확장팩 팁과 노하우 게시판

전체보기

모바일 상단 메뉴

본문 페이지

[애드온] 개인이 만들어 쓰는 라이브러리 관리 팁

연장챙겨가자
댓글: 3 개
조회: 4419
추천: 3
2013-02-14 12:38:50
팁을 먼저 예기하자면 아시는 분들도 있을거라 생각되지만 파일경로에 상위경로인 ..\ 이 사용이 가능합니다.

공개하지 않고 개인이 만들어 쓰는 간단한 애드온들도 있을거라 생각합니다. 그런데 만들어 쓰다보면 기능들이 겹쳐서 라이브러리화 시키거나 전역함수화 시켜서 사용하게 되는데 보통 파일의 위치가 아래와 같이 되죠

● Interface
  ● AddOns
    ● MyAddon1
        MyAddon1.lua
        MyAddon1.toc
      ● libs
          GlobalFunction.lua
          MyLib.lua
    ● MyAddon2
        MyAddon2.lua
        MyAddon2.toc
      ● libs
          GlobalFunction.lua
          MyLib.lua

당연 toc 파일안에 위치는 libs\MyLib.lua 이렇게 될것입니다.

라이브러리수정후 LibStub를 이용해 버전관리만 잘해주면 전혀 문제될것이 없는데
저 같은 경우는 test1, test2 와 같은폴더와 그안에 test1.lua, test2.lua ... 등 파일이 많아 어디에 뭐가 들어있는지 모를때가 많았습니다..;;
그러다보니 애드온을 비활성시키면 애꿎은 곳에서 문제가 발생해 오류가 난 함수명을 전체 찾기로 찾아 일일이 찾아가 파일명 정리하고 복사/붙여넣기해 주고 toc에 다시 적용해 줘야 됩니다.
이게 많이 귀찮죠. 그래서 저는 혼자 만들어 쓰는 애드온들은 전부 아래와 같은 구조를 가지고 있습니다.

● Interface
  ● AddOns
    ● libs
        GlobalFunction.lua
        MyLib.lua
    ● MyAddon1
        MyAddon1.lua
        MyAddon1.toc
    ● MyAddon2
        MyAddon2.lua
        MyAddon2.toc

toc 파일안에는 ..\libs\MyLib.lua 이와 같이 등록되어 있습니다.

이와 같이 하면 수정할때는 libs 안에 있는 파일만 수정하면 됩니다. 라이브러리를 이곳저곳 복사할 필요가 없어지죠
또한 각 애드온별 toc에 정의된 파일들은 애드온에 속한 파일이 되기 때문에 초기화(시작) 과정에서 애드온별로 동일한 작업을 수행해야 될경우에도 사용이 가능합니다.

예를들어 MyLib.lua 에 아래와 같이 되있습니다.
local addonname, addon = ...
local handler = CreateFrame("frame")
handler:SetScript("OnEvent", function(self, event, ...) addon[event](addon, event, ...) end)
addon.event = setmetatable({SetUnit = function(self, event, ...)
handler:UnregisterEvent(event)
handler:
RegisterUnitEvent(event, ...)
end}, {__index = addon,
__newindex = function(self, event, func)
if not func then
handler:UnregisterEvent(event)
elseif not (handler:IsEventRegistered(event)) then
handler:RegisterEvent(event)
end
addon[event] = func or addon[event]
end})
print(addonname)

이것을 MyAddon1, MyAddon2에서 MyLib.lua를 불러왔다면 결과는 MyAddon1과 MyAddon2 를 출력하고 각 네임스페이스에 event 라는 테이블이 생성되며 이벤트를 addon.event:EVENTNAME() 으로 등록이 가능하게 됩니다.

Lv14 연장챙겨가자

모바일 게시판 하단버튼

댓글

새로고침
새로고침

모바일 게시판 하단버튼

지금 뜨는 인벤

더보기+

모바일 게시판 리스트

모바일 게시판 하단버튼

글쓰기

모바일 게시판 페이징

최근 HOT한 콘텐츠

  • 와우
  • 게임
  • IT
  • 유머
  • 연예
AD