모듈 설정시 .Init() 처럼 QuadId 란을 비워두는 경우 Store.GetStore 가 코드를 넘어 공유되지 않습니다
하지만 .Init("Project1") 처럼 아이디를 부여하는 경우 다른 모듈, 로컬스크립트가 접근하더라도 같은 QuadId 를 가졌다면 Store.GetStore 는 공유됩니다
레지스터는 한 값이 변경될 때, 그 값을 사용한 곳이 업데이트 될 수 있도록 만들어주는 Quad 의 주요 기술입니다. 추후 설명될 Class.Extend 와도 사용이 가능합니다.
레지스터는 이러한 시나리오에서 사용될 수 있습니다.
1. UI 의 여러 오브젝트를 한번에 페이드 아웃 혹은 페이드 인 시키는 경우.
2. 가변 크기의 UI 를 업데이트 시키는 경우.
3. 여러 오브젝트들을 한꺼번에 트윈시키는 경우.
4. 다크테마/화이트테마 변경할 수 있게 만드는 경우.
localScreenGUI=script.ParentlocalQuad=require(path.to.module).Init()localStore=Quad.StorelocalClass=Quad.ClasslocalMount=Quad.Mount-- 레지스터를 만들 수 있는 테이블을 만듭니다.-- 여기에 담아내는 값을 업데이트 하는 경우 레지스터로 연결된-- 오브젝트들도 같이 업데이트됩니다.localmyStore=Store.GetStore("myStore")localTextLabel=Class"TextLabel"myStore.Text="0 초 지남"TextLabel"mainLabel"{Size=UDim2.fromOffset(100,200);-- myStore 의 Text 값이 변경됨을 추적하고, Text 값을-- 업데이트 시킵니다.Text=myStore"Text";}Mount(ScreenGUI,Store.GetObject("mainLabel"))localCount=0whiletruedotask.wait(1)-- 값을 업데이트 합니다. 텍스트 라벨도-- 자동적으로 업데이트 됩니다.myStore.Text=Count.." 초 지남"Count=Count+1end
레지스터에는 여러가지 메소드가 담겨있습니다. 이 메소드를 사용하면 레지스터를 보다 더 다양하게 활용할 수 있습니다.
register 특수 메소드가 적용되는 순서는 다음과 같습니다.
:Add(value:any)->register
값에 더하기를 취합니다. 음수형태가 제공되는 경우 빼기 처럼 작동합니다. number, Udim, UDim2, Color3, Vector2 등 더할 수 있는 모든것을 사용할 수 있습니다 주의 : 구조의 복잡성을 피하고자, 여러번 호출시 가장 마지막 호출된 것만 사용됩니다
-- 용법localScreenGUI=script.ParentlocalQuad=require(path.to.module).Init()localStore=Quad.StorelocalClass=Quad.ClasslocalMount=Quad.MountlocalFrame=Class"Frame"localmyStore=Store.GetStore("myStore")myStore.topbarSize=60myStore.width=200-- 레지스터를 변수로 두고 사용합니다locallistItemSize=myStore"width":With(function()returnUDim2.fromOffset(myStore.width,60)end)Frame"mainFrame"{Class"UIListLayout"{SortOrder=Enum.SortOrder.LayoutOrder};-- 사이즈가 width 에 맞게 업데이트됩니다Size=myStore"width":With(function()returnUDim.fromOffset(store.width,400)end);Frame"Topbar"{LayoutOrder=1;BackgroundColor3=Color3.fromRGB(255,0,0);-- 이렇게 여러 값을 묶어서 두 값이 변경됨, 혹은 그이상을-- 만들 수 있습니다.Size=myStore"topbarSize,width":With(function()returnUDim2.fromOffset(myStore.width,myStore.topbarSize)end);}Frame"ListItem"{LayoutOrder=2;BackgroundColor3=Color3.fromRGB(0,255,0);Size=listItemSize;};Frame"ListItem"{LayoutOrder=3;BackgroundColor3=Color3.fromRGB(0,0,255);Size=listItemSize;};}Mount(ScreenGUI,Store.GetObject("mainFrame"))-- width 값을 변경해보세요whiletruedomyStore.width=myStore.width+10task.wait(1)end
기본값을 정합니다. 만약 값이 nil 인 경우 이 값을 사용하게 됩니다. Add 나 With 등 다른것에 영향받지 않습니다. 주의 : 처음 오브젝트가 생성될 때에만 이 값이 사용됩니다.
1 2 3 4 5 6 7 8 9101112131415161718192021
-- 용법localScreenGUI=script.ParentlocalQuad=require(path.to.module).Init()localStore=Quad.StorelocalClass=Quad.ClasslocalMount=Quad.MountlocalFrame=Class"Frame"localmyStore=Store.GetStore("myStore")Frame"mainFrame"{Size=UDim2.fromOffset(200,200);-- color 값이 없으므로 Default 안의 값이 사용됩니다.BackgroundColor3=myStore"color":Default(Color3.fromRGB(255,0,0));}Mount(ScreenGUI,Store.GetObject("mainFrame"))task.wait(5)myStore.color=Color3.fromRGB(0,255,0)