기술 자료

지원

Cloud Code

Cloud Code

Unity 에디터와 연동

Author and modify Cloud Code scripts directly within the Unity Editor using the Cloud Code Authoring module.
읽는 시간 3분최근 업데이트: 12시간 전

Cloud Code 패키지와 함께 설치되는 Cloud Code Authoring 모듈을 사용하면 필요에 따라 Unity 에디터에서 직접 스크립트를 저작(authoring)하고 수정할 수 있습니다. 그런 다음 Deployment 패키지를 사용하여 Unity 에디터에서 Unity Cloud Dashboard에 스크립트를 업로드할 수 있습니다. Unity 에디터 내에 있는 스크립트를 사용하면 사용자는 소스 컨트롤을 클라우드에 있는 버전이 아닌 SSOT(single source of truth)로 취급하여 롤백, 이분화, 기타 일반적인 연산 등의 작업을 간소화할 수 있습니다. 예를 들어 Cloud Code Authoring 모듈을 사용하면 Cloud Code 스크립트와 클라이언트 C# 스크립트 간의 동기화 상태를 더 쉽게 유지할 수 있습니다.

필수 조건

Unity 에디터에서 Cloud Code를 사용하려면 먼저 Cloud Code SDK를 설치하고 Unity Gaming Services 프로젝트를 Unity 에디터에 연결해야 합니다.

프로젝트 연결

Unity Gaming Services 프로젝트를 Unity 에디터와 연결합니다. Unity Cloud Dashboard에서 UGS 프로젝트 ID를 확인할 수 있습니다.
  1. Unity 에디터에서 Edit > Project Settings > Services를 선택합니다.
  2. 프로젝트를 연결합니다.
    • 프로젝트에 Unity 프로젝트 ID가 없는 경우 다음 단계를 진행합니다.
      1. Create a Unity Project ID > Organizations를 선택한 다음 드롭다운 메뉴에서 조직을 선택합니다.
      2. Create project ID를 선택합니다.
    • Unity 프로젝트 ID가 있는 경우 다음 단계를 진행합니다.
      1. Use an existing Unity project ID를 선택합니다.
      2. 드롭다운 메뉴에서 조직과 프로젝트를 선택합니다.
      3. Link project ID를 선택합니다.
Unity 프로젝트 ID가 표시되고 이제 Unity 서비스에 프로젝트가 연결됩니다.
UnityEditor.CloudProjectSettings.projectId
를 사용하여 Unity 에디터 스크립트에서 프로젝트 ID에 액세스할 수도 있습니다.

필수 패키지 설치

에디터에서 Cloud Code 스크립트를 생성하려면 다음 패키지를 설치해야 합니다.
  • Deployment
  • Cloud Code(2.1.1 이상)
위 패키지를 설치한 후 다음 단계에 따라 사용 가능한 패키지 목록에 패키지를 추가합니다.
  1. Unity 에디터의 Package Manager 창에서 + (add) > Add package by name... 을 선택합니다.
  2. com.unity.services.deployment
    를 입력합니다.
  3. Add를 선택합니다.
  4. com.unity.services.cloudcode
    에도 같은 단계를 반복합니다.

Unity 에디터에서 저작

Cloud Code Authoring 모듈을 사용하면 Unity 에디터 내에서 바로 Cloud Code 스크립트를 생성, 편집, 배포할 수 있습니다.

스크립트 생성

다음 단계를 따라 Cloud Code Authoring 모듈을 사용하여 Cloud Code 스크립트를 생성합니다.
  1. Unity 에디터에서 프로젝트 창을 오른쪽 클릭한 다음, Create > Services > Cloud Code Js Script를 선택합니다.
  2. C# 스크립트에서와 마찬가지로 스크립트 이름을 지정합니다. Cloud Code 스크립트는 서비스에 업로드할 때 해당 파일 이름을 식별자로 사용합니다.
  3. Enter 키를 누릅니다.
이제 프로젝트 창과 Window > Deployment를 선택해서 액세스할 수 있는 Deployment 창에서 새로 만든 스크립트를 볼 수 있습니다.

스크립트 편집

다음 두 가지 방법으로 기존 Cloud Code Authoring 스크립트를 편집할 수 있습니다.
  • 프로젝트 탭에서 기존 스크립트를 더블 클릭합니다.
  • Deployment 창에서 기존 스크립트를 찾아 오른쪽 클릭한 다음, 표시되는 메뉴에서 Open을 선택합니다.
기본적으로 Cloud Code 스크립트는 기본 JavaScript 에디터에서 열립니다. 기본 JavaScript 에디터를 설정하는 방법은 다음과 같습니다.
  1. Unity 에디터에서 Edit > Preferences... > Cloud Code를 선택합니다.
  2. Javascript Editor 섹션에서 원하는 JS 에디터의 애플리케이션 경로를 선택합니다.
  3. Apply를 선택합니다.
고급 사례의 경우, 다음 인자를 지정할 수 있습니다.
  • $(File)
    : 에셋의 파일 경로
  • $(ProjectPath)
    : 프로젝트 디렉토리
  • $(SolutionPath)
    : 솔루션 경로
  • $(EditorExePath)
    : 에디터 실행 경로(Unity 에디터에서 Edit > Preferences... > External Tools를 선택하여 결정)
다음은 몇 가지 가능한 설정의 예시입니다.
  • JetBrains Rider(Windows):
    • 애플리케이션:
      cmd.exe
    • 인자:
      /C "$(EditorExePath) $(ProjectPath) $(File)"
  • Microsoft Visual Studio Code:
    • 애플리케이션:
      Code.exe
    • 인자:
      $(ProjectPath) $(File)"

스크립트 배포

Deployment 창에서 스크립트를 배포할 수 있습니다. 자세한 내용은 Deployment 패키지 매뉴얼을 확인하십시오.

스크립트 파라미터 수정

Unity 에디터에서 Cloud Code 스크립트 파라미터에 액세스하고 이를 수정할 수 있습니다.

에디터 인스펙터 창에서 파라미터 액세스

Unity 에디터의 프로젝트 창에서 스크립트를 선택하여 Cloud Code 스크립트의 파라미터를 수정할 수 있습니다. 스크립트 파라미터는 에디터의 인스펙터(Inspector) 창에서 열립니다. 사용할 수 있는 파라미터 유형은 다음과 같습니다.
  • 문자열
  • 부울
  • 숫자
  • JSON
  • 모두

스크립트 본문에서 파라미터 선언

더 원활하게 Cloud Code 스크립트를 사용하려는 경우, 각 파라미터 이름을 키로, 파라미터 유형을 값으로 포함하는
params
오브젝트를 익스포트하여 스크립트에서 직접 파라미터를 선언하면 됩니다.
예제는 아래와 같습니다. JavaScript
module.exports.params = { "echo" : "Boolean" }
또는 파라미터를 필수 파라미터로 지정하려는 경우,
type
required
프로퍼티가 모두 포함된 오브젝트를 지정하면 됩니다.
JavaScript
module.exports = async ({ params, context, logger }) => { return { "value": params["aParam"] };};module.exports.params = { "aParam" : { "type": "String", "required": true } }
기본적으로 파라미터는 필수가 아닙니다. 두 포맷 모두 다음과 같이 원하는 대로 결합할 수 있습니다. JavaScript
module.exports = async ({ params, context, logger }) => { var value = params["echo"] ? params["aParam"] : "default"; return { "value": value };};module.exports.params = { "echo" : "Boolean", "aParam" : { "type": "String", "required": true } }
스크립트 내 파라미터를 사용하는 경우, 해당 파라미터가 이전에 인스펙터에서 정의한 파라미터를 오버라이드합니다. 스크립트 내 파라미터는 파라미터를 선언하는 것보다 간단하지만, Deployment 패키지를 사용하지 않고 스크립트 내 파라미터를 업데이트하려고 하면 Unity Cloud Dashboard가 파라미터를 파싱하지 않습니다.

JS 번들

JS 스크립트는
import
또는
require
키워드를 통해 로컬 스크립트나 외부 모듈을 임포트할 수 있습니다. 번들링 프로세스는 스크립트를 입력으로 사용하고 번들링된 결과를 Unity Cloud Dashboard에 제공합니다. 이 프로세스는 로컬 파일을 수정하지 않습니다.
스크립트에서 번들링을 사용하려면
bundling
오브젝트를 익스포트하고 값을 true로 설정합니다. 이 프로세스는 스크립트별로 진행됩니다. 기본적으로 스크립트는 번들링되지 않습니다. 번들링을 사용하는 경우, 스크립트가 번들링된 다음 Deployment 창을 통해 배포됩니다.
JavaScript
module.exports.bundling = true;
다음은 샘플 프로젝트에서 번들링의 예시입니다. lib.js
module.exports.helloWorld = "Hello world!";
scriptToBundle.js
const lib = require("./lib");module.exports = async ({ params, context, logger }) => { return { "value": lib.helloWorld };};module.exports.bundling = true;

Deployment 창

Deployment 창은 Deployment 패키지의 주요 기능입니다. Deployment 창을 사용하면 단일 통합 인터페이스를 사용하여 배포 요구 사항에 맞춰 모든 서비스에서 배포할 수 있으며, 클라우드 에셋을 각 클라우드 서비스에 업로드할 수 있습니다. 자세한 내용은 Deployment 패키지 매뉴얼을 확인하십시오.

Unity 에디터에서의 Cloud Code JavaScript 프로젝트

Unity 에디터에서 Cloud Code JavaScript 프로젝트는 Unity 프로젝트의 루트에 있으며, 그 구조는 다음과 같습니다. ├──
Assets

│ └──
CloudCode

│ └──
cloud_script.js

├──
node_modules

├──
package.json

└──
package-lock.json
package.json
에는 프로젝트 구성이 저장됩니다. 이 파일은 JS(JavaScript) 에디터와 NPM에서 사용되며, C#에서 .csproj 파일 유형을 사용하여 Unity 에디터에 대한 정보를 정의하는 것과 비슷한 방식으로 작동합니다. JavaScript 프로젝트 시스템에서 사용되는 해당
package.json
파일은 Unity 패키지가 아니라 NPM 패키지입니다. Unity와 NodeJS가 동일한 패키지 관리 시스템을 사용하는 것은 우연의 일치입니다.
package-lock.json
은 NPM에서 생성되며, 종속성 결정에 사용됩니다. 종속성이 항상 같은 방식으로 결정되도록 이 파일을 소스 컨트롤에 보관하는 것이 좋습니다.

NodeJS

더 많은 툴을 사용하기 위해 개발자는 NodeJS를 설치해야 합니다. NodeJS를 사용하면 자동 완성을 비롯하여 데브 환경에서 주로 쓰이는 여러 기능을 지원할 수 있습니다.

자동 완성

JS 자동 완성의 대부분은 typings 프로젝트에서 처리됩니다.
.d.ts
파일을 사용하여 유형이 지정된 API를 정의하면 모든 JavaScript 파일을 보강할 수 있습니다. 대부분의 공개 JS 라이브러리에는 자체
.d.ts
파일이 있거나 typings에 정의된 파일이 있습니다.
에디터에서 종속성에 대한 자동 완성 기능을 사용하려면 종속성에 대한 유형 정의를 찾을 수 있어야 합니다. 에디터는
node_modules
에서 이 정의를 찾습니다. 자동 완성 기능을 사용하려면
package.json
파일을 사용하여
node_modules
에 올바른 파일을 설치해야 합니다.

외부 툴

JS 프로젝트 내에서 적절한
npm install ...
커맨드를 실행하여 외부 툴을 추가할 수 있습니다. 외부 툴을 추가하고 해당 툴의 공식 가이드라인을 따라 툴을 설정하면 됩니다.
ESLint와 Jest에 관한 다음 예시를 살펴보시기 바랍니다.

ESLint

  1. npm i -D eslint
    를 실행합니다. 이 커맨드는 프로젝트 종속성에 ESLint를 추가합니다.
  2. 프로젝트 루트에 다음을 포함하는
    .eslint.json
    파일을 생성합니다.
    JSON
    { "env": { "commonjs": true, "es2021": true }, "extends": "eslint:recommended", "parserOptions": { "ecmaVersion": 13 }, "rules": { }}
  3. ESLint를 실행하도록 IDE를 구성합니다. Visual Studio Code의 경우 자동으로 설정되지만, IDE에 따라 추가 설정이 필요할 수 있습니다.
  4. 이제 ESLint가 구성되어 작동합니다.
ESLint가 작동하는지 테스트하려면 유효하지만
eslint:recommended
규칙 집합을 위반하는 코드를 추가하면 됩니다. 예를 들어
if (something == -0)
을 추가하면 IDE에 ESLint 경고가 표시되어야 합니다.

Jest

Jest는 JavaScript 테스트를 위한 프레임워크입니다. 다음은 Cloud Code 스크립트의 유닛 테스트를 생성하는 방법에 관한 예시입니다.
  1. npm install --save-dev jest
    를 실행합니다. 이 커맨드는 Jest 패키지를 설치합니다.
  2. .es10
    스크립트로 실행되도록 Jest를 구성합니다.
  3. 다음 코드 스니핏을
    package.json
    에 추가합니다.
    JSON
    "jest": { "moduleFileExtensions": ["es10", "js"], "testMatch": ["**/*.test.es10"]}
moduleFileExtensions
엔트리를 통해
js
es10
파일을 테스트에 사용하고,
testMatch
엔트리를 통해
.test.es10
으로 끝나는 파일을 테스트에 사용할 수 있습니다.

유닛 테스트 예시

다음 JS 유닛 테스트 예시는 오브젝트를 반환하고 테스트 스크립트의 결과가 동일한지 확인합니다. 모킹(mocking)을 사용하면 더 많은 고급 옵션을 사용할 수 있습니다.
테스트 대상 스크립트
Cloud Code에는 다음 서명이 필요합니다. JavaScript
module.exports = async ({ params, context, logger }) => { return {value: "1"};};
테스트 스크립트
JavaScript
const test = require("./jest_01.es10")it("test",async () =>{ expect(await test({})).toMatchObject({value:"1"});});
테스트 진행
커맨드 라인에 다음 커맨드를 사용하여 테스트를 진행합니다.
npm run test