
Homebrew 설치 Ruby와 Git으로 개발된 MacOS용 패키지 매니저입니다. terminal에 명령어 한 줄 입력으로 원하는 것의 설치를 도와줍니다. 그럼 먼저 brew를 설치하겠습니다. 아래 코드를 터미널에 입력 후(복붙 가능) 엔터쳐주세요. 코드 출처 참고로 터미널 open 단축키는 command + spacebar 키입니다. /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" 비밀번호도 입력해줍니다. (mac 로그인할 때 비밀번호) 설치하다가 엔터 누르라고 하는데 한번 눌러주면 설치가 이어집니다. 이후 Xcode도 다운로드 할거냐고 묻는데 y 혹은 yes를 적어줍니다. Xc..

한 함수(메서드)에 최소한의 들여쓰기(indent)만 허용했는가? (최대 depth : 2까지만 허용) 예시로, while문 안에 if문이 있으면 들여쓰기는 2다. indent(들여쓰기) depth를 줄이는 가장 좋은 방법은 함수(또는 메서드)를 분리하는 것이다. else 예약어를 사용하지 않았는가? if와 else if 사용은 자유롭게 가능하다. else와 같이 조건없이 모든 경우를 열어주는 코드는 큰 버그를 초래할 수 있기 때문에 지양하는 것이 좋다. else 예약어를 사용하지 말라는 것을 조금 더 넓은 관점에서 생간한다면 분기문을 줄여 작성하라는 것으로 볼 수 있다. 더보기 모든 원시값과 문자열을 포장했는가? 변수를 선언하는 방법에는 두 가지가 있다. int age = 20; //원시 타입의 변수 ..
const image = document.getElementById('container-img'); const container = document.getElementById('img-container'); let moveInterval; let keysPressed = {}; //이미지 스케일변경 var scaleFactor = 3; var currentWidth = image.clientWidth; var newWidth = currentWidth * scaleFactor; image.style.width = newWidth + 'px'; //실행함수 function moveImage() { let xPos = image.offsetLeft; let yPos = image.offsetTop; let ..
const image = document.getElementById('container-img'); let moveInterval; //이미지 스케일변경 var scaleFactor = 3; var currentWidth = image.clientWidth; var newWidth = currentWidth * scaleFactor; image.style.width = newWidth + 'px'; //실행함수 document.addEventListener('keydown', function (event) { clearInterval(moveInterval); // 기존의 인터벌을 정지 moveInterval = setInterval(() => { let xPos = image.offsetLeft; le..
const image = document.getElementById('container-img'); const container = document.getElementById('img-container'); let moving = false; let control = true; let clickpos = 0; let direction = 0; // -1: left, 1: right //let direction_Y = 0; // -1: bottom, 1: top let container_width = container.clientWidth let container_height = container.clientHeight //이미지 스케일변경 var scaleFactor = 3; var currentWidt..
Game:CreateObject(Toybox.FX_Money, pos) Game:DeleteObject(cube) local function test() 예시 end cube.OnDestroyEvent:Connect(DestroyEvent)
local ButtonNum = tonumber ( string.sub ( self:GetName(), 7, 7 ) ) 7번 문자부터 7번 문자까지 가져오겠다임. 맨 뒷 글자만 숫자여서 한글자만 가져오려고 저렇게 한 것.
변수/함수의 선언 방법 3가지 1. : local = 지역 변수/함수 (같은 스크립트 안에서) ex) local a = 5 print(a) 2. : 생략 = 글로벌 변수/함수 (같은 종류의 모든 스크립트에서) ex) b = 5 print(b) 3. : Script.(변수이름) or Script:(함수이름) = 공개 변수/함수 (같은 종류의 모든 스크립트에서) ex) Workspace.Cube1.Var = 5 print(Workspace.Cube1.Var) : 할당을 자기 자신한테 했을 때 ex) Script.var = 12 공개변수 사용 가능한 객체 : Player, Character, Game, StaticMesh, Script, Table → 모두 같은 종류의 스크립트에서 불러오기 가능 공개변수 접근..

local table1 = {} --table1에 값이 없는 상태로 테이블이 만들어짐 table1 = {1} --이 값에서 table1 = {1, 2} --이 값처럼 2를 추가하고 싶을 때 table1 = {2} --이렇게는 추가가 안된다. 값이 {2}로 갱신됨 예시. table1 = {1, 2} table.insert(table1, 3) --이렇게 인서트로 추가하는 것임 table1 = {1, 2, 3} ------------------------------------------------------------------------------------------ SongData = { a , b, c} SongData[1] -- a a.Round = { 1,2,3 } --a라는 테이블 값에 Round..
[[]] Table [[ ]] --여러 줄을 문자열로 할당할 때 사용하는 키워드입니다. 예시. local SongCsvData = {} SongCsvData.Value = [[ Round,ID,Quiz,Choice1,Choice2,Answer,AnswerDesc 1,1,이건 퀴즈이다,맞다,아니다,2,퀴즈가 아니다. 1,2,루아스크립트이다,맞다,아니다,1,루아가 맞다. ]] CSV --스프레드시트에서 파일>다운로드>쉼표로 구분된 값(.csv) 하면 메모장에서 열/행을 쉼표로 변경하여 표현해준다. *스프레드시트 참고 https://docs.google.com/spreadsheets/d/1vAhd7Eof97Ffk8eqGqtRviMy6QmY7ra3FeygLA4oVB4/edit?usp=sharing string...

--- Data = { 1, 2, 3 } --이렇게 쉼표로 넣은 값은 인덱스 Data.ID = { a, b, c } --이렇게 공개변수로 넣으면 속성(키) Data = { 1, 2, 3, ID={ a, b, c } } --이렇게 속성(키)를 넣을 수도 있다. (윗줄에 적은게 Data에 값으로 들어오면 이렇게 들어옴) --- 인덱스, 속성 2가지로 구분되어 사용되는데 2개가 합쳐질 수 없다. 예시. Data = { 1, 2, 3 } 일때, Data.ID = { a,b,c } 로 Data에 값을 추가하면 Data = { 1,2,3,ID={a,b,c} } 이렇게 되는데 Data[3] 까지만 불러올 수 있다. ID는 속성(키)이기 때문에 Data[4]가 아닌 Data["ID"] 혹은 Data.ID 이렇게 해야된..
tonumber tonumber 함수는 문자열을 해당 숫자 값으로 변환한다. 문자열로 처리된 데이터를 숫자 값으로 변환하면 숫자 값으로만 할 수 있는 다양한 계산 및 분석을 수행할 수 있다. ToNumber("1001") 이 예에서는 숫자 값 1001을 반환합니다. ToNumber("1.48e12") 이 예에서는 숫자 값 1,480,000,000,000을 반환합니다. string이 숫자가 아닌 경우 ToNumber 함수는 본질적으로 #ERROR를 반환합니다 . 예시. =ToNumber("100")은 100을 반환합니다. =ToNumber("100 ") 은 #ERROR 를 반환합니다. (공간이 있기 때문에) tostring tostring()은 객체의 문자열/텍스트 표현을 반환한다. 일반적으로 디버깅,..
string.gsub string.gsub() 함수에는 세 개의 인수가 있다. 1. 첫 번째 인수는 하위 문자열을 다른 하위 문자열로 바꾸려는 주제 문자열이고 2. 두 번째 인수는 주어진 문자열에서 대체하려는 패턴이고 3. 세 번째 인수는 패턴을 교체하려는 문자열이다. local function ReplaceFlag(text) local result = text result = string.gsub(result, "%\"", "") result = string.gsub(result, "%#", "'") result = string.gsub(result, "%%", ",") return result end 식별자 " %(식별자) 그 다음 찾을 키워드 " 예시. "%#" "%%" "%\"" " %\" " :..
--Workspace/Sample/ScreenUI/Frame 경로에 있는 오브젝트를 FrameUI 변수에 할당해요. local FrameUI = Workspace.Sample.ScreenUI.Frame wait(2) --2초를 기다린 뒤, FrameUI:SetVisible(false) --FrameUI를 보이지 않게 해요. print("UI Visible : false") wait(2) --2초를 기다린 뒤, local UIState = FrameUI:GetVisible() --FrameUI의 현재 가시성 상태를 받아와요. FrameUI:SetVisible(not UIState) --FrameUI를 보이게 해요. print("UI Visible : true")
--Workspace/Sample/ScreenUI/Text 경로에 있는 오브젝트를 TextUI 변수에 할당해요. local TextUI = Workspace.Sample.ScreenUI.Frame.Text wait(2) --2초를 기다린 뒤, TextUI:SetText("Hello World!") --TextUI의 글자를 변경해요.
--Workspace/Sample/ScreenUI/Frame 경로에 있는 오브젝트를 FrameUI 변수에 할당해요. local FrameUI = Workspace.Sample.ScreenUI.Frame wait(2) --2초를 기다린 뒤, FrameUI:SetOpacity(0.5) --FrameUI의 투명도를 변경해요. 응용 애니메이션 for i = 1, 10 do targetUI:SetOpacity(i * 0.1) --점점 밝아짐 wait(0.1) end for i = 10, 1, -1 do targetUI:SetOpacity(i * 0.1) --점점 투명해짐 wait(0.1) end
--Workspace/Sample/ScreenUI/Frame 경로에 있는 오브젝트를 FrameUI 변수에 할당해요. local FrameUI = Workspace.Sample.ScreenUI.Frame --Workspace/Sample/ScreenUI/Text 경로에 있는 오브젝트를 TextUI 변수에 할당해요. local TextUI = FrameUI.Text --UI에 적용할 색상을 변수에 할당해요. local RedColor = Color.new(255, 0, 0, 255) local BlueColor = Color.new(0, 0, 255, 255) wait(2) --2초를 기다린 뒤, FrameUI:SetBackgroundColor(RedColor) --FrameUI의 색상을 변경해요. Text..

ServerScript --사용할 Phase를 등록해요. --Phase는 여러개도 등록할 수 있어요. local LobbyState = Game:AddPhase("Lobby") local PlayState = Game:AddPhase("Play") local ResultState = Game:AddPhase("Result") 더보기 함수 RModePhase AddPhase(string phasename) 게임에 단계를 추가할 수 있어요. (추가할 단계 이름) --서버와 클라이언트간 동기화되는 값을 등록하고 초기값을 설정한뒤, 값이 변경될때마다 호출되게 해요. Game:AddReplicateValue("GameState", "Lobby", Enum.ReplicateType.Changed, 0) 더보기 함수..

ServerScript --AddTimeEvent로 호출할 함수에요. local function PrintMessage() print("Call PrintMessage!") --메시지를 로그창에 출력해요. end --문자열("PrintMessage~")로 이벤트 이름과 PrintMessage 함수를 연결해서 호출해요. --이벤트 이름을 다르게하면 여러개도 호출할 수 있어요. Game:AddTimeEvent("PrintMessage1", 2, PrintMessage) Game:AddTimeEvent("PrintMessage2", 2, PrintMessage) 더보기 이벤트 AddTimeEvent(String EventName, float Time, LuaScriptFunction EventFuunction..

ServerScript --서버와 클라이언트간 동기화되는 값을 등록하고 초기값을 설정한뒤, 값이 변경될때마다 호출되게 해요. --Game에 GameID라는 변수를 선언하고 초기값으로 1을 할당해요. Game:AddReplicateValue("GameID", 1, Enum.ReplicateType.Changed, 0) 더보기 함수 AddReplicateValue(string ValueName, float Data, ReplicateType Type, float Time, bool bSaveToStorage) 해당 객체에 서버, 클라이언트 간 동기화가 가능한 실수를 추가해요. (추가할 Value 이름, float 데이터, Enum.ReplicateType.타입, 동기화 시간, 스토리지 저장 여부) 샘플 --..