コンテンツにスキップ

ディレクトリとnamespaceの構造

開発に興味がありますか?

Project EAUploaderでは開発メンバーを常に募集しています!! 話を聞くだけでもOK! 是非当プロジェクトのDiscordサーバーへお越しください。 参加はこちら



本ドキュメントは、EAUploader v1.6.2 の内容に準拠しています。

ディレクトリ構造


EAUploaderは、VPMパッケージtech.uslog.eauploaderとして配布されています。パッケージの主なディレクトリ構造は次の通りです。

tech.uslog.eauploader/
├── package.json パッケージ情報(バージョン、依存関係)
├── CHANGELOG.md 変更履歴
├── Docs/ 仕様書(英語)
├── Editor/ エディタ拡張(EAUploader.Editor アセンブリ)
│ ├── EAUploader.Editor.asmdef
│ ├── Public EAUploader API/ 外部ツール向けの公開API(1クラス1ファイル)
│ ├── Scripts/
│ │ ├── EAUploaderCore.cs 起動・初期化処理、グローバルな状態
│ │ ├── EAUploaderEditorManager.cs 編集ツールの登録管理
│ │ ├── EAUPluginAttribute.cs [EAUPlugin] 属性
│ │ ├── AvatarUploader.cs ビルド・アップロード処理
│ │ ├── AssetProcessor.cs アセットインポート時の処理
│ │ ├── Config.cs 設定ファイル(settings.json)
│ │ ├── LanguageUtility.cs, T7e.cs 多言語対応
│ │ ├── ThemeUtility.cs テーマ
│ │ ├── CustomPrefabUtility/ 管理用Prefab Variant、タグ、プレビュー、シェーダー確認、VRM変換、移行、削除
│ │ ├── Coexistence/ AvatarOptimizer との共存
│ │ ├── VRCSDK/ アバターパフォーマンスの計算
│ │ └── Feedback/, SubWindow/ フィードバック送信・ようこそ画面(現在未使用)
│ └── Resources/
│ ├── Localization/ UIの翻訳ファイル(ja.json, ko.json)
│ ├── Message/ ヘルプメッセージ(言語別)
│ ├── Shaders/ AlwaysShow.shader(プレビューのマーカー)、TextureAdjust.shader(テクスチャ編集)
│ └── UI/
│ ├── EAUploader.cs メインウィンドウ
│ ├── MainWindow.uxml
│ ├── styles.uss / tailwind.uss
│ ├── Components/ 独自UIコンポーネント
│ ├── Modals/ ウィンドウ内に表示するモーダル
│ ├── TabContents/
│ │ ├── AvatarList/ アバター一覧
│ │ ├── Setup/ 編集画面
│ │ │ └── Editor/ 標準の編集ツール(Common, ViewpointPositionEditor, ShapeKeyEditor, TextureEditor, OutfitTool)
│ │ ├── Upload/ アップロードのフォーム
│ │ └── ImportSettings/ EA Library の記事(現在は画面に表示されません)
│ └── Windows/ ダイアログ、エラーレポート、VRM変換ウィンドウ
├── Runtime/ ランタイムコンポーネント(EAUploader アセンブリ)
│ ├── EAUploader.asmdef
│ └── Components/ EAUploaderMeta, EAUploaderOutfit, AvatarTagComponent
└── .vpm/, .github/ VPMリポジトリの生成・配布用

アセンブリ


アセンブリ場所対象プラットフォーム内容
EAUploader.EditorEditor/EditorEAUploaderの本体。UI、アイテム管理、編集ツール、アップロード処理、公開API
EAUploaderRuntime/すべてアバターに付与するコンポーネント

EAUploader.Editorは次のVersion Definesを定義しています。

シンボルパッケージ条件
HAS_VRMjp.pokemori.vrm-converter-for-vrchat41.1.0以上
HAS_AAOcom.anatawa12.avatar-optimizer1.7.0以上
HAS_MAnadena.dev.modular-avatar1.9.0以上

EAUploader(Runtime)は、VRChat SDK - Avatars(com.vrchat.avatars)が存在する場合にVRC_SDK3Aを定義します。

namespace


namespace主なクラス内容
EAUploaderEAUploaderCore, EAUploaderEditorManager, EditorRegistration, EAUPluginAttribute, AvatarUploader, LanguageUtility, T7e, Config起動処理、編集ツールの登録、アップロード、多言語対応などのコア機能
EAUploader.CustomPrefabUtilityManagedPrefabs, PrefabManager, PrefabInfo, TagManager, PrefabPreview, ShaderChecker, Utility, VRMImporter管理用Prefab Variant、メタデータ、タグ、プレビュー画像、シェーダーの確認、VRMの変換、移行、削除
EAUploader.UIEAUploader, ThemeUtilityメインウィンドウと画面の切り替え、テーマ
EAUploader.UI.AvatarListMainアバター一覧(internal)
EAUploader.UI.SetupMain, ViewpointPositionEditor編集画面と、ビューポイント位置エディタ
EAUploader.UI.Setup.EditToolsEditToolModal, EditToolSession, ToolModalFrame, EditToolUtility など標準の編集ツールとその共通基盤(internal)
EAUploader.UI.UploadUploadFormアップロードのフォーム(internal)
EAUploader.UI.ModalsImportModal, SettingsModal, ClothSettingModal, TagFilterModal, TagSettingsModal, PrefabPreviewModal などウィンドウ内に表示するモーダル
EAUploader.UI.ComponentsModal, ToastManager, ShadowButton, MaterialIcon, HelpButton, DropdownFieldPro, Preview など独自UIコンポーネント
EAUploader.UI.WindowsDialogPro, Loggerダイアログ、エラーレポート、ログ出力
EAUploader.Editor.APICoreAPI, LanguageAPI, UploadAPI公開API
EAUploader.Editor.Plugin.APIPluginAPI公開API(拡張機能の登録)
EAUploader.Editor.Prefab.APIPrefabAPI, PrefabPreviewAPI, ShaderAPI, PrefabUtilityAPI, VRMAPI公開API(プレハブの操作)
EAUploader.Editor.Resource.APIEAUResourceAPI, HelpButtonAPI, LinkAPI, MaterialIconAPI など公開API(スタイル、UIコンポーネント)
EAUploader.ComponentsAvatarTagComponent, EAUploaderMeta, EAUploaderOutfitランタイムコンポーネント

EAUploader.Editor.*.APIは、外部のツールから利用されることを想定した公開APIです。内部の実装(EAUploaderやEAUploader.CustomPrefabUtility)を薄くラップしています。詳細は「API Reference」をご覧ください。

クラスの関係


主要なクラスの関係は次の通りです。

EAUploaderCore([InitializeOnLoad])
├── EAUploaderEditorManager …… 編集ツール(EditorRegistration)の登録・保持
├── ShaderChecker ………………… プレハブのシェーダー確認
├── PrefabManager ………………… 管理用Prefab Variant の一覧(PrefabInfo)とメタデータ
│ ├── ManagedPrefabs ……… Variant の作成・複製・パスの管理
│ ├── TagManager ………… タグとタググループ
│ └── PrefabPreview ……… プレビュー画像の生成・保存
└── UI.EAUploader(メインウィンドウ)
├── UI.AvatarList.Main …… アバター一覧
├── UI.Setup.Main ……………… 編集画面(編集ツール一覧、アイテム情報)
│ └── UI.Upload.UploadForm → AvatarUploader → VRChat SDK
└── modal / toasts ……………… 共通のモーダルと通知

各画面は、EAUploaderCore.selectedPrefabPath(選択中のアイテムのパス)を共有しています。

処理の流れの詳細は「Editor」をご覧ください。