Package Manager活用術

893 Views

March 01, 24

スライド概要

u1w共有会#10に登壇した際の資料。公開してなかったことに気づいたのでこちらに上げときます。

profile-image

Unityでゲーム作る学生です。

シェア

またはPlayer版

埋め込む »CMSなどでJSが使えない場合

関連スライド

各ページのテキスト
1.

Package Manager活用術 unity1week online共有会 #10

2.

自己紹介 Annulus Games (@AnnulusGames) - UnityでSTG作ってる高校生です - 普段はこんな感じのゲームを作ってます

3.

今回作ったゲーム「REWIND」 - 「巻き戻す」操作を活用して ゴールを目指すパズルゲーム - 倉庫番+αのゲームシステム - グリッド移動用のライブラリを作成 (そのうち公開するかも)

4.

ゲーム制作には時間がかかる…!

5.

TODO □ コードを書く □ グラフィックを描く □ 効果音・BGM □ レベルデザイン □ etc… これら全てを1週間でやらねばならない

6.

コードを使い回そう - 「また同じようなコード書いてる…」 - 以前書いたものを再利用しよう - 機能ごとに分割してライブラリ化 しておくと便利 ユーザーの入力の取得 キャラの移動 UIの制御 ユーティリティ

7.

どうやってライブラリを管理する…?

8.

例えば… プロジェクトA ScriptA.cs ScriptB.cs ScriptC.cs u1w用のプロジェクト Copy & Paste ScriptA.cs

9.

全部まとめて管理したい

10.

パッケージ化しよう パッケージ A パッケージを用意→ プロジェクトA ScriptA.cs ScriptB.cs ScriptC.cs ScriptA.cs パッケージを参照 u1w用のプロジェクト ScriptA.cs

11.

Package Managerを使おう

12.

Package Managerとは - プロジェクト内のパッケージの 管理を行う機能 - アセットの追加やGitリポジトリ との連携も可能 - Packages以下に置かれるため Assetsフォルダが整理できる - 自作パッケージも使用可能!

13.

実際に作ってみよう

14.

1. 新規プロジェクトを作成 - プロジェクト名は適当でOK - 必須ではないが、Package一つ につきプロジェクト一つの方が 管理が楽

15.

<root> 2. フォルダを配置 ├── package.json ├── README.md ├── CHANGELOG.md ├── LICENSE.md - 公式が推奨するディレクトリ構成に ├── Third Party Notices.md ├── Editor │ ├── [company-name].[package-name].Editor.asmdef 沿ってフォルダを配置 - なんか大変そう… - ただしこれは配布用のもの │ └── EditorExample.cs ├── Runtime │ ├── [company-name].[package-name].asmdef │ └── RuntimeExample.cs ├── Tests │ ├── Editor │ │ ├── [company-name].[package-name].Editor.Tests.asmdef │ │ └── EditorExampleTest.cs │ └── Runtime │ ├── [company-name].[package-name].Tests.asmdef │ └── RuntimeExampleTest.cs ├── Samples~ │ ├── SampleFolder1 │ ├── SampleFolder2 │ └── ... └── Documentation~ └── [package-name].md

16.

ディレクトリ構成 (最低限) <root> ├── package.json ├── Runtime ←ここにScriptを突っ込む │ ├── [company-name].[package-name].asmdef │ └── RuntimeExample.cs ├── Editor (エディタ拡張しないなら無くてもいい) │ ├── [company-name].[package-name].Editor.asmdef │ └── EditorExample.cs

17.

3. package.jsonを配置 - package.jsonという名前で jsonファイルを作成 - パッケージ名やバージョン、作者、 依存関係などの情報を記述

18.
[beta]
package.jsonの内容 (最低限)
{
"name": “com.annulusgames.upm-sample",
"displayName": "UPM Sample",
"version": "1.0.0",
"unity": "2019.4",

←正式名(逆ドメイン)&表示名
←パッケージのバージョンと必要なUnityのバージョン

"author": {
"name": “Annulus Games”

←作者名

},
"description": “UPMのテスト",

←説明があればここに

"dependencies": {
"com.unity.some-package": "1.0.0"
}
}

←依存するパッケージがあればここに

19.

4. asmdefを配置 - 待ってasmdefって何?

20.

Assembly Definitionとは - C#のビルドファイル(アセンブリ)を分割して 出力する - パッケージ化の際には必ず配置する ▲こんなやつ

21.

とりあえず置いてみよう - Create > Assembly De nitionで作成 - Runtimeフォルダ(とEditorフォルダ)に asmdefをそれぞれ配置 fi - (依存関係とプラットフォームを設定)

22.

依存関係の設定 - asmdefを配置した場合、依存関係を 明示的に設定しなければならない - 使いたいアセンブリのasmdefを Assembly De nition Referencesに 突っ込めばOK fi ▲ここに注目

23.

プラットフォームの設定 - 基本そのままでOK - エディタ拡張を使う場合のみ、 Editor以外のチェックを外す

24.

完成!

25.

使ってみよう - 新規プロジェクトを作成 - Package Managerを開く - 左上の+ボタンから 「Add package from disk…」 - 先ほど作ったパッケージの package.jsonファイルを選択

27.

自分で作るのは大変…

28.

OSSを活用しよう - Githubなどで様々なUnity向けのOSSが公開されている - 多くはPackage Managerから導入が可能 - 左上の+ボタンから 「Add package from git URL…」 https://github.com/AnnulusGames/LucidRandom.git?path=/Assets/LucidRandom リポジトリのURL package.jsonのパス

29.

オススメのOSSを紹介!

30.

uPalette - プロジェクト内の色を一元管理& 一括変更が可能なライブラリ - エディタ上からImageやButton などの色を管理できる - Repository https://github.com/Haruma-K/uPalette

31.

UniRx / UniTask - イベント処理・非同期処理を最高の パフォーマンスで処理できるライブラリ - 学習コストは高いが、使いこなせれば 超強力 - Repository https://github.com/neuecc/UniRx https://github.com/Cysharp/UniTask

32.

In-game Debug Console - ゲーム内でConsoleを確認できる ライブラリ - デバッグ用のコマンドを 登録することも可能 - サクッとデバッグしたい時に便利 - Repository https://github.com/yasirkula/UnityIngameDebugConsole

33.

Lucid Audio - オーディオの再生を簡単に行うための ライブラリ - メソッドチェーンを用いた記述方式 - コールバックやGameObjectへの - Repository https://github.com/AnnulusGames/LucidAudio 紐付けなどの高度なオプション ▲DOTweenみたいに書ける

34.

まとめ - 機能ごとにライブラリを作ろう - ライブラリ管理にはPackage Managerを使おう - OSSを活用しよう → 効率的にゲームを作ろう!

35.

Thank you for listening!