■Unity開発メモ用のWiki◎現在扱っていること・Unity全般・MMDからUnityへの変換してインポート・MMDの仕様把握・BlenderでMMDモデルのカスタム

目次



MOD制作Unityのアセット関連のツール

AssetStudio (旧称: Unity Studio)

BepInExとは?

  • BepInEx(Bepis Injector Extendable)は、Unityおよび.NETFrameworkゲームを対象としたプラグインフレームワークです。BepInExの主な目標は
    • エンドユーザーが簡単にインストールして使用できるようにする。
    • 改造に必要なツールを提供します。
    • 小さくて、できるだけ多くの異なるUnityゲームに簡単に移植できます。
  • GitHub
  • 公式ドキュメント

VSCodeの環境構築

参考:Visual Studio Code を使用して .NET クラス ライブラリを作成する
追加するコンポーネント:C# 拡張機能
追加するコンポーネント:.NET 5.0
  • 「Visual Studio 2019 Community」の方がいい?

Unityのアセットの基礎知識(AssetBundle・Addressable Assets System・Resources )

参考:今更誰も教えてくれない、Unityにおけるアセット読み込みについての基礎知:https://qiita.com/k7a/items/df6dd8ea66cbc5a1e21d
  • 現在では非推奨?
 
アセット読み込みの手法
  1. Resources.Load
  2. StreamingAssetsからのロード
  3. AssetDatabase.LoadAssetAtPath
  4. AssetBundle.LoadAsset

Resources.Load

  • Resourcesフォルダの中身にアセットを入れる
  • プロトタイプ開発時や外部から差し替えの必要が無く、アセットの容量もさほど大きくないようなアプリなどに適する
 
使い方
  1. Assetsフォルダ以下に"Resources"という名前のフォルダを作る
  2. 上記Resourcesフォルダ内にアセットを入れる
  3. Resources.Load(assetName)でロードできる
  • 引数に渡す文字列はResourcesフォルダからの相対パスから拡張子を除いたもの
 
例)アセットのパスが<ProjectPath>/Assets/Resources/Hoge/texture.pngの場合
var texture = Resources.Load<Texture2D>("hoge/texture");
 

AssetBundle.LoadAsset

AssetBundleは対象プラットフォームごとにビルドする必要がある。
また、標準ではビルドするためのメニューは用意されておらず、スクリプトを書く必要がある。
 
使い方
  1. アセットを格納したAssetBundleをビルドする
  2. ビルドしたAssetBundleをどこか(WebサーバーかStreamingAssets)に配置する
  3. 配置したAssetBundleをロードする
  4. assetBundle.LoadAsset(assetName)でAssetBundleからアセットをロードする
 

AssetBundleManagerを使う?

参考:AssetBundle Manager:https://docs.unity3d.com/ja/2018.4/Manual/AssetBun...
  • 現在、公式のはない?
GitHub:https://github.com/kamanii24/AssetBundleManager
 
AssetBundleManager.Initialize()
AssetBundleManifest オブジェクトをロードします。AssetBundle Manager でアセットのロードを開始する前に、これを呼び出す必要があります
 
アセットのロード
AssetBundle Manager を使い、初期化も終わりました。これで、アセットをロードする準備ができました。 それでは、アセットバンドルをロードし、そのバンドルからオブジェクトをインスタンス化する方法を見てみましょう。
 
シーンのロード
シーンにアセットバンドルの名前を割り当て、そのシーンをロードする必要がある場合は、わずかに違うコードパスを使う必要があります。パターンは比較的似ていますが、わずかな違いがあります

解析ソフトメモ

  • sourcetrail(C#非対応)
    • ソースの内部依存関係をグラフ等で可視化できる
 
  • Spy++
    • 有償版のVisualStudioに同梱されている(らしい)ツール
 
  • Winspector
    • 古い
 
  • Visual Studioのコードマップ(有償版のみ)
  • Visual Studioのクラスダイアグラム
 
  • Roslyn
 
  • PlantUML

「sourcetrail」とVS Codeとの連携(C#非対応)

参考:ソースコードを静的解析するオープンソースのSourcetrailで効率よく解析:https://tracpath.com/works/development/sourcetrail...
参考:無料&手軽にソースコードを可視化できる「Sourcetrail」、大規模開発やレガシーコードの理解に役立ちそう:https://gigazine.net/news/20210217-sourcetrail/
GitHub:https://github.com/CoatiSoftware/Sourcetrail/relea...
対応言語:C/C++、Java、Python

関数の依存関係が可視化
関数はオレンジ色、変数は青色、クラスは灰色

Unityのアセットのメモ

  • MonoScript
    • スクリプトのAssetを扱うためのクラス
  • Transform
    • オブジェクトの位置、回転、スケールを格納し、操作するために使用されます
  • Texture2D
    • テクスチャデータ
  • Sprite
    • スプライトデータ
  • SkinnedMeshRenderer
    • メッシュの動的変化?
  • Shader
    • シェーダー
  • RenderSettings
    • シーンにおけるビジュアル要素の範囲を設定する
  • ReflectionProbe
    • Reflection Probeは「反射」を疑似的に表現する機能の一つ
  • RectTransform
    • 2Dのレイアウトに使用する
  • PreloadData
 

Unity検証用テストプロジェクト

BepinEXの導入
GitHub:https://github.com/BepInEx/BepInEx/releases
  • 「日本語」が入ってるとBepInExは(それを含むHFパッチも)動かない
 
コンソールの表示
  • 「BepInEx\config」のBepInEx.cfg
    • 一度ゲームを起動すると作成される
  • [Logging.Console]を「True」に変更する
 
IPALoaderXの導入
GitHub:https://github.com/BepInEx/IPALoaderX/releases

UnityとYAML

参考:UnityシーンのヒエラルキーをYAMLから復元する:https://qiita.com/lovebourbaki/items/1c36375786689...
参考:【Unity】PrefabやSceneのYAMLを開いて直接編集してみる:https://light11.hatenadiary.com/entry/2019/05/30/2...
  • UnityのSceneやPrefabやScriptableObjectはYAMLで書かれている
    • 「Scene」「Prefab」「GameObject」はアセットから抽出出来ない?

Visual Studioのクラスダイアグラム

参考:VisualStudio2017でUnity内のソースコードをクラス図に自動変換する:https://qiita.com/bearjiro/items/f9db9ad181c59d3f8...
参考:[Unity・C#]ソースコードからクラス図を自動で作成する:https://soft-rime.com/post-7422/
参考:Visual Studioによるクラス図の作成:https://so-zou.jp/software/tech/tool/ide/visual-st...
 
概要:自動でクラス図を生成する機能
前提条件:VisualStudioとUnityがインストールされている

「Unity」と「dnSpy」と「AssetStudioGUI」の関係

 

 

 

 

 

コメントをかく


「http://」を含む投稿は禁止されています。

利用規約をご確認のうえご記入下さい

Menu

【メニュー編集】

スカイリム関連

スカイリム関連


Menu

【メニュー編集】

スクリプト関連

フリーエリア

管理人/副管理人のみ編集できます