셀 사용자 정의 패키지 만들기
6546 단어 PackageManagerUnityC#
패키지 항목 레이아웃
우선 포장이 된 새로운 유니티 프로젝트를 제작한다.항목 내의 폴더 등을 다음 레이아웃과 결합
참조: Unity 매뉴얼https://docs.unity3d.com/Manual/cus-layout.html
Unity 매뉴얼에 따르면 Unity 프로젝트가 아니기 때문에 제작할 때 다른 프로젝트를 가져와야 합니다.나는 이것이 사용하기 좋지 않은 것 같아서 일반적인 프로젝트에 뛰어들었다.
<root>
└── Assets
├── PackageContents
│ ├── package.json
│ ├── README.md
│ ├── CHANGELOG.md
│ ├── LICENSE.md
│ ├── Editor
│ │ ├── [YourPackageName].Editor.asmdef
│ │ └── EditorScript.cs
│ ├── Runtime
│ │ ├── [YourPackageName].asmdef
│ │ └── RuntimeScript.cs
│ └── Documentation~
│
│
└── Tests
├── Editor
│ ├── [YourPackageName].EditorTests.asmdef
│ └── EditorTests.cs
└── Runtime
├── [YourPackageName].RuntimeTests.asmdef
└── RuntimeTests.cs
package.json 만들기
우선 패키지.json이라는 파일을 쓰세요.
참조:https://docs.unity3d.com/Manual/upm-manifestPkg.html
예제
{
"name": "com.company.package",
"displayName": "Package Name",
"version": "1.0.0",
"unity": "2019.2",
"description": "A Test Package",
"keywords": [
"package"
],
"category": "Utility"
}
더 많은 설정이 있지만 기본적으로 이런 설정이 있으면 문제없겠죠?이름 = reverse url 형식의 패키지 이름
displayName = 인간이 쉽게 읽을 수 있는 이름
버전 = 패키지 버전(major.minor.patch)
unity=unity에 필요한 버전
설명문
키워드
category = 패키지 그룹 이름
C# 스크립트 만들기
이곳은 당연히 자유로운 곳이다.만들고 싶은 포장을 설치하다.예를 들면 Asset Bundle의 제작과 주변 시스템 불러오기?
편집기용이라면 Assets/PackageContents/Editor의 폴더를 사용할 수 있고, 게임용 스크립트라면 Assets/PackageContents/Runtime를 사용할 수 있습니다.
어셈블리 정의 생성하기
Assembly Definition을 추가하면 패키지에 대한 DLL을 만들 수 있습니다.이것은 메인 프로젝트의 컴파일 시간이 빨라져서 누구에게만 DLL을 주고 편리한 것입니다!추가만 하면 끝이니 넣으세요.
편집기와 Runtime 폴더에 각각 추가하고 편집기의 definition에서 참조하는 dll에runtime용 dll을 추가합니다
테스트 파일 만들기
개인적인 판단이지만 모처럼 좋은 기능이 있어 테스트용 스크립트를 추가할 수 있다.
using UnityEngine;
using UnityEngine.TestTools;
using NUnit.Framework;
using System.Collections;
public class EditorTests {
[Test]
public void RunTests() {
Asset.Pass();
}
[UnityTest]
public IEnumerator RunTestsWithEnumerator() {
yield return null;
}
}
* 앞으로 테스트 스크립트 잘 하세요!
Verdaccio라는 npm repository에 게시
나는 다음에 할 포장을 어디에 놓고 관리하고 싶으니 어디에 두어라.유니티의 Package Manager는 npm을 사용하기 때문에 자신이 만든 물건을 Package Manager에 제출하고 싶어서 협조가 필요합니다.Unity씨가 추천한 것은 Verdaccio입니다.(설치와 준비가 쉬워서 그런지 유니티는 내부의 다른 것을 사용한 것 같다)
여기서 다운로드 및 설치:https://github.com/verdaccio/verdaccio
설치 후command line의 패키지입니다.제이슨 폴더가 있어요.
npm publish --registry http://localhost:4873
등록 클릭!(물론 다른 기계에서 npm를 위탁 관리하려면 URL과 일치해야 한다)생산 프로젝트에 사용
우선 유니티에게 우리가 만든 리포지토리가 어디에 있는지 알려줘야 한다.
Packages라는 폴더의 manifest입니다.json을 열고 scoped Registries라는 json 대상을 추가합니다.
URL, 이름, 패키지를 간단하게 추가하는 역방향 URL
{
"scopedRegistries": [
{
"name": "My Packages",
"url": "http://localhost:4873",
"scopes": [
"com.company"
]
}
],
"dependencies": {
"com.unity.ads": "2.0.8",
"com.unity.analytics": "2.0.16",
..hogehoge..
}
}
그리고 "dependencies"에서 자신이 발표한 패키지 이름과 버전을 정의합니다"dependencies": {
"com.unity.ads": "2.0.8",
"com.unity.analytics": "2.0.16",
..hogehoge..,
"com.company.package": "1.0.0"
}
유니티로 돌아가면 패키지를 다운로드하여 사용할 수 있습니다!더욱 편리하게
우선, 코드를 관리하려면gitrepository는 당연히 해야 한다.그리고 GitLab의 CI 기능을 이용하여 테스트 클래스를 자동으로 실행합니다. OK하면 npm에서 publish를 할 수 있습니다!
· Git repo 제작
/git runner 만들기 (CI에 쓰는 방법)
·git runner에 사용할 스크립트 추가 (루트 폴더에.gitlab-ci.yml 추가)
제가 직접 쓴 스크립트가 그렇습니다.
stages:
- runTests
- publish
variables:
version: "awk '$$1==\"m_EditorVersion:\"{print $$2}' ./ProjectSettings/ProjectVersion.txt"
editor-tests:
script:
- "echo 'Running Editor Tests...'"
- "unityVersion=$(eval $version)"
- "unity='/Applications/Unity/Hub/Editor/'$unityVersion'/Unity.app/Contents/MacOS/Unity'"
- $unity -batchmode -runTests -projectPath . -testResults ./editmodeResults.xml -testPlatform editmode
stage: runTests
tags:
- unity
only:
- master
runtime-tests:
script:
- "echo 'Running Runtime Tests...'"
- "unityVersion=$(eval $version)"
- "unity='/Applications/Unity/Hub/Editor/'$unityVersion'/Unity.app/Contents/MacOS/Unity'"
- $unity -batchmode -runTests -projectPath . -testResults ./playmodeResults.xml -testPlatform playmode
stage: runTests
tags:
- unity
only:
- master
publish-npm:
script:
- "cd ./Assets/PackageContents"
- "npm publish --registry http://localhost:4873/"
stage: publish
tags:
- unity
only:
- master
· 2단계(테스트 및 발표)・ 편집기용 및 실행용 테스트 스크립트 실행(Project Versions의 텍스트에서 시작하는 유니티 버전 꺼내기)
・ 테스트 OK 하면 npm publish
/주 지점만 이동(only: master)
끝내다
따로 포장하면 좋은 프레임으로 각 아이템을 사용할 수 있어서 정말 편리합니다!나중에 분류하는 게 힘들 수 있으니 조기 단계에서 포장하는 것을 추천합니다!
Reference
이 문제에 관하여(셀 사용자 정의 패키지 만들기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/clane/items/0b90907a6f9e825b1eb2텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)