849 Views
March 01, 24
スライド概要
u1w共有会#10に登壇した際の資料。公開してなかったことに気づいたのでこちらに上げときます。
Unityでゲーム作る学生です。
Package Manager活用術 unity1week online共有会 #10
自己紹介 Annulus Games (@AnnulusGames) - UnityでSTG作ってる高校生です - 普段はこんな感じのゲームを作ってます
今回作ったゲーム「REWIND」 - 「巻き戻す」操作を活用して ゴールを目指すパズルゲーム - 倉庫番+αのゲームシステム - グリッド移動用のライブラリを作成 (そのうち公開するかも)
ゲーム制作には時間がかかる…!
TODO □ コードを書く □ グラフィックを描く □ 効果音・BGM □ レベルデザイン □ etc… これら全てを1週間でやらねばならない
コードを使い回そう - 「また同じようなコード書いてる…」 - 以前書いたものを再利用しよう - 機能ごとに分割してライブラリ化 しておくと便利 ユーザーの入力の取得 キャラの移動 UIの制御 ユーティリティ
どうやってライブラリを管理する…?
例えば… プロジェクトA ScriptA.cs ScriptB.cs ScriptC.cs u1w用のプロジェクト Copy & Paste ScriptA.cs
全部まとめて管理したい
パッケージ化しよう パッケージ A パッケージを用意→ プロジェクトA ScriptA.cs ScriptB.cs ScriptC.cs ScriptA.cs パッケージを参照 u1w用のプロジェクト ScriptA.cs
Package Managerを使おう
Package Managerとは - プロジェクト内のパッケージの 管理を行う機能 - アセットの追加やGitリポジトリ との連携も可能 - Packages以下に置かれるため Assetsフォルダが整理できる - 自作パッケージも使用可能!
実際に作ってみよう
1. 新規プロジェクトを作成 - プロジェクト名は適当でOK - 必須ではないが、Package一つ につきプロジェクト一つの方が 管理が楽
<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
ディレクトリ構成 (最低限) <root> ├── package.json ├── Runtime ←ここにScriptを突っ込む │ ├── [company-name].[package-name].asmdef │ └── RuntimeExample.cs ├── Editor (エディタ拡張しないなら無くてもいい) │ ├── [company-name].[package-name].Editor.asmdef │ └── EditorExample.cs
3. package.jsonを配置 - package.jsonという名前で jsonファイルを作成 - パッケージ名やバージョン、作者、 依存関係などの情報を記述
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"
}
}
←依存するパッケージがあればここに
4. asmdefを配置 - 待ってasmdefって何?
Assembly Definitionとは - C#のビルドファイル(アセンブリ)を分割して 出力する - パッケージ化の際には必ず配置する ▲こんなやつ
とりあえず置いてみよう - Create > Assembly De nitionで作成 - Runtimeフォルダ(とEditorフォルダ)に asmdefをそれぞれ配置 fi - (依存関係とプラットフォームを設定)
依存関係の設定 - asmdefを配置した場合、依存関係を 明示的に設定しなければならない - 使いたいアセンブリのasmdefを Assembly De nition Referencesに 突っ込めばOK fi ▲ここに注目
プラットフォームの設定 - 基本そのままでOK - エディタ拡張を使う場合のみ、 Editor以外のチェックを外す
完成!
使ってみよう - 新規プロジェクトを作成 - Package Managerを開く - 左上の+ボタンから 「Add package from disk…」 - 先ほど作ったパッケージの package.jsonファイルを選択
自分で作るのは大変…
OSSを活用しよう - Githubなどで様々なUnity向けのOSSが公開されている - 多くはPackage Managerから導入が可能 - 左上の+ボタンから 「Add package from git URL…」 https://github.com/AnnulusGames/LucidRandom.git?path=/Assets/LucidRandom リポジトリのURL package.jsonのパス
オススメのOSSを紹介!
uPalette - プロジェクト内の色を一元管理& 一括変更が可能なライブラリ - エディタ上からImageやButton などの色を管理できる - Repository https://github.com/Haruma-K/uPalette
UniRx / UniTask - イベント処理・非同期処理を最高の パフォーマンスで処理できるライブラリ - 学習コストは高いが、使いこなせれば 超強力 - Repository https://github.com/neuecc/UniRx https://github.com/Cysharp/UniTask
In-game Debug Console - ゲーム内でConsoleを確認できる ライブラリ - デバッグ用のコマンドを 登録することも可能 - サクッとデバッグしたい時に便利 - Repository https://github.com/yasirkula/UnityIngameDebugConsole
Lucid Audio - オーディオの再生を簡単に行うための ライブラリ - メソッドチェーンを用いた記述方式 - コールバックやGameObjectへの - Repository https://github.com/AnnulusGames/LucidAudio 紐付けなどの高度なオプション ▲DOTweenみたいに書ける
まとめ - 機能ごとにライブラリを作ろう - ライブラリ管理にはPackage Managerを使おう - OSSを活用しよう → 効率的にゲームを作ろう!
Thank you for listening!