アセット
アセットはプロジェクトの Assets/ フォルダー内の任意のファイルです。Turian はフォルダーを監視し、各ソースファイルを .Cache/ 内のエンジン用成果物にインポートして、プロジェクトのアセットカタログに記録します。
id と .meta ファイル
すべてのアセットには隣に .meta ファイルができ、安定した id が保存されます。シーン、マテリアル、コンポーネントはパスではなくこの id でアセットを参照するため、Studio の Assets パネルでもファイルマネージャーでも、自由に移動・名前変更できます。.meta ファイルはバージョン管理に含め、.Cache/ は含めないでください。
対応ファイル
| 種類 | 拡張子 | 開く場所 |
|---|---|---|
| シーン / プレハブ | .prefab |
Studio のタブ |
| マテリアル | .material |
Inspector |
| データアセット | .dataasset、.asset |
Inspector |
| モデル | .gltf、.glb、.fbx、.obj |
既定のプログラム |
| テクスチャ | .png、.jpg、.jpeg、.tga、.bmp、.gif、.webp、.dds |
既定のプログラム |
| フォント | .ttf、.otf |
— |
| UI ドキュメント / スタイルシート | .ui、.uss |
既定のプログラム |
| 文字列テーブル | .strings |
既定のプログラム |
| スクリプト | .cs |
コードエディター |
モデル
- glTF 2.0(
.gltf、.glb)— ジオメトリ、すべてのメッシュとプリミティブ、マテリアル。glTF の各マテリアルは子のマテリアルアセットに、埋め込み画像は子のテクスチャアセットになり、id はモデルの id から導出されるので再インポートしても変わりません。別ファイルのテクスチャは独立したアセットとしてインポートされます。 - FBX — Assimp によるジオメトリとマテリアル。
- OBJ — ジオメトリ。
モデルは ModelComponent でシーンに配置します。モデルを Model フィールドにドロップしてください。Materials は Unity のマテリアルスロットのように、サブメッシュごとのマテリアルを差し替えます。
テクスチャ
テクスチャはミップマップ付きで GPU に送られます。Inspector のインポート設定で、解像度(長辺)の上限を全体またはビルドターゲットごとに設定できます。プロジェクト全体の既定値は Graphics Settings の Texture Max Resolution です。
マテリアル
Assets パネルで右クリック → New → Material で作ります。マテリアルは glTF 2.0 の PBR メタリック・ラフネスモデルを使います:
| プロパティ | 意味 |
|---|---|
BaseColorFactor、BaseColorTexture |
ベースカラー(RGBA)とテクスチャ。 |
MetallicFactor、RoughnessFactor、MetallicRoughnessTexture |
金属度と粗さ。 |
NormalTexture |
タンジェント空間の法線マップ。 |
OcclusionTexture |
アンビエントオクルージョン。 |
EmissiveFactor、EmissiveTexture |
表面が発する光。 |
Assets パネルからテクスチャを Inspector のテクスチャスロットにドロップします。
データアセット
データアセットは、アセットファイルとして保存され Inspector で編集される独自の C# クラスです — Unity の ScriptableObject のようなものです。アイテム、敵のステータス、会話、ステージのリストなど、デザイナーがコードに触れずに調整すべきものに使います。
namespace Usercode;
[CreateAssetMenu(path: "Game/Weapon", fileName: "NewWeapon")]
public class WeaponData : DataAsset
{
public string DisplayName = "Sword";
[Range(1, 100)] public int Damage = 10;
public float Cooldown = 0.5f;
}
スクリプトがコンパイルされると、Assets パネルのコンテキストメニューに New → Game → Weapon が表示されます。
実行時のアセット読み込み
参照をフィールドとして公開して Inspector で設定し、IAssetLoader で読み込みます:
public class Armory : Component
{
public AssetReference<MaterialAsset>? GoldMaterial;
public override async void OnStart()
{
var loader = RuntimeServices.TryGet<IAssetLoader>();
if (loader is null || GoldMaterial is null) return;
var material = await GoldMaterial.LoadAsync(loader);
}
}
アセットの配布
エクスポート時、Turian はインポートしたすべてのアセットをゲームの Content/ フォルダー内の Open Asset Package(.oap)にまとめます。CRC で検査されるエントリを持つ単一の圧縮ファイルで、ランタイムが直接読み込みます。CLI では .oap ファイルのパック(ChaCha20 暗号化も可能)、一覧、検査、検証、展開もできます。
再インポート
ファイルが変わるとインポートは自動で実行されます。Project → Reimport Assets はすべての .meta を書き直してプロジェクト全体を再インポートし、turian-cli compile <プロジェクト> は同じことをヘッドレスで行います。