質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Unity3D

Unity3Dは、ゲームや対話式の3Dアプリケーション、トレーニングシュミレーション、そして医学的・建築学的な技術を可視化する、商業用の開発プラットフォームです。

Q&A

0回答

112閲覧

InputManager.assetの書き換えがうまくいかない。

popoe

総合スコア6

Unity3D

Unity3Dは、ゲームや対話式の3Dアプリケーション、トレーニングシュミレーション、そして医学的・建築学的な技術を可視化する、商業用の開発プラットフォームです。

0グッド

0クリップ

投稿2018/02/02 08:23

Unityについての質問です。

やっている事

バージョンは2017.3を利用しています。

ios, appleのtvOS,android, android TV向けにアプリを作っているのですが、
tvOSだけリモコンから渡されるインプットの値が変なので、
他プラットフォームと挙動を合わせるためにビルド時にインプット設定を毎回書き換えています。

問題

ビルド後に元の設定に戻そうとするとエディターの見た目は変わりますが、
SourceTreeで実ファイルの差分を確認してみると、OnPreprocessBuildで書き換えたままになっています。

どうすれば実ファイルにもインプット設定が反映するでしょうか。

1度目(OnPreprocessBuild)の時はちゃんとファイルに反映して
2度目(OnPostprocessBuild)の時はエディターしか反映しない理由がわかりません。

ちなみにunity5.5の時はPostprocessBuildに書き換え処理を入れて、
1度ビルドして設定を書き換えた後、もう一度ビルドしてxcodeプロジェクトを作った後に、
SourceTreeから変更をリセットしてtvOS向けの書き出しを行なっていました。。

C#

1public class ProcessBuild : IPreprocessBuild, IPostprocessBuild 2{ 3 //実行順を指定(0がデフォルト、低いほど先に実行される 4 public int callbackOrder { get { return 0; } } 5 6 //ビルド前の処理 7 public void OnPreprocessBuild (BuildTarget buildTarget, string path){ 8 //インプット設定をtvOS用に書き換え 9 SerializedObject serializedObject = new SerializedObject (AssetDatabase.LoadAllAssetsAtPath ("ProjectSettings/InputManager.asset") [0]); 10 SerializedProperty axesProperty = serializedObject.FindProperty ("m_Axes"); 11 12 SerializedProperty axisPropertySubmit = axesProperty.GetArrayElementAtIndex (15); 13 axisPropertySubmit.Next (true); 14 do { 15 if (axisPropertySubmit.name == "altPositiveButton") { 16 axisPropertySubmit.stringValue = "joystick button 14"; 17 break; 18 } 19 } while (axisPropertySubmit.Next (false)); 20 21 SerializedProperty axisPropertyCancel = axesProperty.GetArrayElementAtIndex (17); 22 axisPropertyCancel.Next (true); 23 do { 24 if (axisPropertyCancel.name == "altPositiveButton") { 25 axisPropertyCancel.stringValue = "joystick button 0"; 26 break; 27 } 28 } while (axisPropertyCancel.Next (false)); 29 30 serializedObject.UpdateIfDirtyOrScript (); 31 serializedObject.ApplyModifiedProperties(); 32 } 33 34 //ビルド後の処理 35 public void OnPostprocessBuild (BuildTarget buildTarget, string path){ 36 //インプット設定を元に戻す 37 SerializedObject serializedObject = new SerializedObject (AssetDatabase.LoadAllAssetsAtPath ("ProjectSettings/InputManager.asset") [0]); 38 SerializedProperty axesProperty = serializedObject.FindProperty ("m_Axes"); 39 40 SerializedProperty axisPropertySubmit = axesProperty.GetArrayElementAtIndex (15); 41 axisPropertySubmit.Next (true); 42 do { 43 if (axisPropertySubmit.name == "altPositiveButton") { 44 axisPropertySubmit.stringValue = "joystick button 0"; 45 break; 46 } 47 } while (axisPropertySubmit.Next (false)); 48 49 SerializedProperty axisPropertyCancel = axesProperty.GetArrayElementAtIndex (17); 50 axisPropertyCancel.Next (true); 51 do { 52 if (axisPropertyCancel.name == "altPositiveButton") { 53 axisPropertyCancel.stringValue = "joystick button 1"; 54 break; 55 } 56 } while (axisPropertyCancel.Next (false)); 57 serializedObject.UpdateIfDirtyOrScript (); 58 serializedObject.ApplyModifiedProperties(); 59 } 60}

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問