Contents
Unity バージョンと環境構築
BONELAB は Unity 2020.3 LTS 系列 をベースに動作します。正しいバージョンでプロジェクトを作成しないと、SDK が読み込めずコンパイルエラーや実行時クラッシュの原因になります。このセクションでは、推奨 Unity バージョンと Unity Hub を使ったインストール手順を説明します。
推奨 Unity バージョン
- Unity 2020.3.44f1(2020.3 LTS 系列の最新パッチ)
安定性が高く、BONELAB の Modding SDK が公式にサポートしているバージョンです。
必要なモジュール
| モジュール | 用途 |
|---|---|
| Windows Build Support (Mono) | PC 向けビルド必須 |
| Android Build Support + OpenJDK | Quest 向け Mod 開発時に必要 |
Unity Hub でのインストール手順
-
Unity Hub の取得
https://unity.com/download から Unity Hub をダウンロードし、指示通りにインストールします。 -
Installs タブを開く
左サイドバーの「Installs」をクリックし、「Add」ボタンで新規インストール画面へ進みます。 -
2020.3 LTS 系列を選択
バージョン一覧から「Unity 2020.3 LTS (最新パッチ)」を選び、次へ進みます。 -
モジュールの追加
「Windows Build Support(Mono)」は必ずチェックし、Quest 用開発の場合は「Android Build Support」と「OpenJDK」も併せて選択します。 -
インストール開始
「Done」をクリックしてダウンロードとインストールが完了するまで待ちます。
重要:プロジェクト作成時は必ず 2020.3 LTS を使用してください。異なるバージョンで開くと SDK が正しく読み込めません。
BONELAB Modding SDK の取得と導入
BONELAB 用の公式 Modding SDK は 「BONELAB Modding SDK」 と呼ばれ、BONEWORKS 用とは別に配布されています。ここでは最新リリースの取得方法と Unity プロジェクトへのインポート手順を解説します。
最新リリースの確認
公式リリースは GitHub の BONELAB Modding SDK リポジトリで管理されており、常に最新版が公開されています。執筆時点(2024 年 10 月)では v0.4.2 が最新です。開発を始める前に必ず以下ページで最新バージョンを確認してください。
- GitHub Releases: https://github.com/StressLevelZero/BONELAB-ModdingSDK/releases
※ バージョンは随時更新されます。README に記載された Unity 対応バージョンと一致しているか必ずチェックしましょう。
SDK のダウンロード手順
- 上記リポジトリの「Releases」ページへ移動
- 最新リリースの Assets から
BONELAB_Mod_SDK.unitypackageをダウンロード - ダウンロードしたファイルはプロジェクト外の安全なフォルダーに保存しておきます
注意:非公式サイトや改変版パッケージはセキュリティ上危険です。必ず公式 GitHub から取得してください。
Unity プロジェクトへのインポート
- 空の Unity プロジェクト(次章で作成)を開く
- メニューバー Assets → Import Package → Custom Package... を選択し、ダウンロードした
.unitypackageを指定 - 表示されたウィンドウですべてにチェックが入っていることを確認し、Import をクリック
インポート完了後、プロジェクトビューに BONELAB_ModdingSDK フォルダーが作成され、サンプルシーンや API ドキュメントが含まれます。
プロジェクト作成とシーン設定
ここでは BONELAB 用のクリーンな Unity プロジェクトを作り、SDK のサンプルシーンをベースに自分だけの Mod シーンを構築する手順を示します。オブジェクトのプレハブ化や階層管理のコツも併せて解説します。
新規 Unity プロジェクトの作成
- Unity Hub の Projects タブ で「New」ボタンをクリック
- テンプレートは 3D (URP 非使用) を選択し、プロジェクト名に
MyBonelabMod等分かりやすい名前を付ける - 保存場所は長すぎないパス(例:
C:\UnityProjects\MyBonelabMod)に設定し、Create を実行
サンプルシーンのコピー
- プロジェクトが開いたら File → Open Scene で
BONELAB_ModdingSDK/SampleScene.unityを選択 - シーンが正しく読み込めたことを確認したら、Hierarchy 上で右クリックし Save As... で
MyModScene.unityとして保存
この手順により、公式サンプルの構造を保ちつつ自由に改変できるベースシーンが作成できます。
基本オブジェクトの配置とプレハブ化
| オブジェクト | 作成手順 | プレハブ保存先 |
|---|---|---|
| 箱(Cube) | Hierarchy → 右クリック → 3D Object → Cube → Transform を (0,1,0)、Scale (0.5,0.5,0.5) に設定。Rigidbody コンポーネントを追加 |
Assets/Prefabs/Cube.prefab |
| スイッチ(Button) | Hierarchy → 右クリック → UI → Button - TextMeshPro → Canvas の Render Mode を World Space に変更し、位置 (0,1.5,0) に設定。テキストは「Activate」へ変更 |
Assets/Prefabs/SwitchButton.prefab |
作成したオブジェクトを Project ウィンドウ へドラッグすると自動的にプレハブ化され、シーン外でも再利用可能です。
ヒント:BONELAB の物理は PhysX ベースなので、Rigidbody を付け忘れるとオブジェクトが固定されたままになります。UI は必ず World Space にしないと VR 空間で正しく表示されません。
基本的な C# スクリプト例(LaserGun)
以下は「レーザー銃」の基本ロジックを実装したサンプルスクリプトです。Assets/Scripts/LaserGun.cs に保存し、シーン内の任意のオブジェクトにアタッチすれば動作します。
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 |
using UnityEngine; /// <summary> /// シンプルなレーザー発射スクリプト。 /// 左クリック(または VR コントローラのトリガー)で前方へ Ray を飛ばし、ヒットしたオブジェクトにダメージを与えます。 /// </summary> public class LaserGun : MonoBehaviour { // 発射間隔(秒) [SerializeField] private float fireRate = 0.2f; // レーザーの最大距離 [SerializeField] private float range = 30f; // ヒット時に再生するエフェクト [SerializeField] private GameObject impactEffect; private float _nextFireTime = 0f; void Update() { // VR 用入力は適宜書き換えてください if (Input.GetMouseButton(0) && Time.time >= _nextFireTime) { FireLaser(); _nextFireTime = Time.time + fireRate; } } private void FireLaser() { Ray ray = new Ray(transform.position, transform.forward); if (Physics.Raycast(ray, out RaycastHit hit, range)) { // エフェクト生成 Instantiate(impactEffect, hit.point, Quaternion.LookRotation(hit.normal)); // Damageable コンポーネントがあればダメージを適用 var dmg = hit.collider.GetComponent<Damageable>(); if (dmg != null) dmg.ApplyDamage(10); } } } |
スクリプトのポイント解説
fireRateと_nextFireTimeで連射速度を制御Physics.Raycastにより前方にレイを飛ばし、ヒット位置にエフェクトを生成- ダメージは対象が Damageable コンポーネントを持つ場合のみ適用
エフェクトの作成と割り当て
- GameObject → Create Empty → 名前を
LaserImpactに変更 - Add Component → Particle System を追加し、以下の設定例で調整
- Shape: Sphere、Radius: 0.05
- Lifetime: 0.2 s、Start Color: 赤→黄 の Gradient
- 作成したオブジェクトを Prefab 化し
Assets/Effects/LaserImpact.prefabとして保存 LaserGunコンポーネントの Impact Effect フィールドに作成したプレハブをドラッグ&ドロップ
VR 環境ではパーティクルが遠距離で見えづらくなることがあります。
ParticleSystem.main.maxParticlesを抑えて描画負荷も管理しましょう。
ビルド・テスト・配布手順
この章では、作成した Mod のビルド方法、ゲーム内への導入手順、およびエラー対策を詳しく解説します。
MOD Builder を使ったビルド
- Unity メニューバー BONELAB → Mod Builder を選択
- Mod Name に
MyFirstMod等任意の名前、Output Folder にMods\MyFirstMod(※正しいパスはBONELAB/Mods)を指定 - ビルド対象は DLL と AssetBundle の両方にチェックし、Build ボタンをクリック
ビルドが成功すると以下のファイルが生成されます。
|
1 2 3 4 |
MyFirstMod/ ├─ MyFirstMod.dll └─ myfirstmod.bundle |
ゲーム内へのインストール
-
Steam 版 のインストールフォルダー(例)
C:\Program Files (x86)\Steam\steamapps\common\BONELAB -
フォルダー直下に
Modsが無い場合は作成 - ビルドした
MyFirstModフォルダー全体をBONELAB/Modsにコピー
重要:Quest 版の場合は公式の mod.io クライアント経由で有効化します。手順は公式 Reddit スレッド(
r/BONELAB)をご参照ください。
ゲーム起動後、メインメニューの Mods タブに自作 Mod が表示されればインストール完了です。
デバッグとよくあるエラー対策
| エラー例 | 主な原因 | 対処法 |
|---|---|---|
Failed to load assembly |
Unity バージョン不一致 | 2020.3 LTS で再ビルド |
MissingMethodException |
SDK API のバージョン違い(例:Damageable.ApplyDamage が削除) |
最新 SDK に更新し、サンプルコードを合わせる |
NullReferenceException at LaserGun.FireLaser |
impactEffect が未設定 |
インスペクタでプレハブを割り当て直す |
AssetBundle load failed |
出力フォルダー名や拡張子が間違っている | Mod Builder の Output Folder 設定を確認 |
デバッグ時は Unity コンソールだけでなく、ゲーム起動時に出力されるログファイルも併せて確認すると原因特定が容易です。
%AppData%\LocalLow\StressLevelZero\BONELAB\output_log.txt
配布プラットフォームの必須要件(Thunderstore / Nexus Mods)
Mod を公開する際は、各プラットフォームが要求する mod.json(または同等のメタデータ)を正しく記述する必要があります。以下に代表的な必須項目と例を示します。
Thunderstore 用 manifest.json
| キー | 説明 | 例 |
|---|---|---|
name |
Mod の識別子(小文字・ハイフン推奨) | "my-first-mod" |
version_number |
SemVer 形式のバージョン | "1.0.0" |
website_url |
プロジェクトページや GitHub URL | "https://github.com/username/MyFirstMod" |
description |
簡潔な概要(200文字以内) | "BONELAB 用レーザー銃 Mod。VR で射撃体験を拡張します。" |
dependencies |
必要な他の Mod(例:公式 SDK) | [ { "dependency": "StressLevelZero-BONELAB-ModdingSDK", "version": ">=0.4.0" } ] |
loaders |
対応 Unity/ゲームローダー | [ "bonelab" ] |
アップロード手順
1. 上記 JSON をプロジェクトルートに manifest.json として保存
2. 必要ファイル(.dll, .bundle, README.md, スクリーンショット等)を同梱し ZIP 圧縮
3. Thunderstore のマイページから Upload Mod → ファイル選択 → 必須情報の入力 → 公開
Nexus Mods 用 mod.json
| キー | 説明 | 例 |
|---|---|---|
name |
Mod 名(英数字・スペース可) | "My First Mod" |
version |
バージョン文字列 | "1.0.0" |
author |
作者名またはハンドル | "YourName" |
description |
詳細説明(HTML 可) | "BONELAB 用レーザー銃です。VR で使用できます。" |
game_version |
対応 BONELAB バージョン | "1.0.0" |
mod_loader |
使用した SDK のバージョン | "BONELAB-ModdingSDK v0.4.2" |
アップロード手順
1. 必要情報を記載した mod.json を作成
2. MyFirstMod/ ディレクトリ全体(DLL・AssetBundle・JSON 等)を ZIP 圧縮
3. Nexus Mods の Add Mod からファイルを選択し、タイトル・カテゴリ・画像等を入力して公開
共通の注意点:必ず「依存関係」に公式 SDK のバージョン(例
v0.4.x)を明記し、利用者が同バージョンを導入できるよう案内してください。
まとめ
- Unity バージョンは 2020.3 LTS を Unity Hub 経由でインストールし、必要モジュール(Windows / Android)を追加する。
- BONELAB Modding SDK は公式 GitHub のリリースページから取得し、
unitypackageとしてプロジェクトにインポートすれば使用可能になる。 - サンプルシーンのコピー をベースにオブジェクトを配置・プレハブ化し、VR 向け UI は必ず World Space に設定する。
- C# スクリプト例(LaserGun) を参考に、レイキャストとパーティクルエフェクトで基本的な武器ロジックを実装できる。
- Mod Builder で
.dllと.bundleを生成し、正しいフォルダーBONELAB/Modsに配置すればゲーム内テストが可能になる。 - エラーは Unity バージョン・SDK のバージョン不整合が主因なので、常に公式情報を確認しながらビルドすること。
- 配布 は Thunderstore と Nexus Mods が主流で、それぞれ
manifest.json/mod.jsonに必須項目(名前・バージョン・依存関係など)を正確に記載する必要がある。
以上の手順とポイントを押さえれば、初心者でも BONELAB の Mod を作成し、コミュニティへ安全かつスムーズに共有できます。ぜひ自分だけのユニークなコンテンツで VR 世界を広げてみてください!