ハマってしまった事とその対処過程・気づきをメモ。
ジョイスティックを追加してバリバリ開発していたのですが、
いつの間にか動作しなくなっていた問題。
ひとまず、ボタンを押して反応するかぐらいの
簡単なものを作成する工程に立ち返ってみることにしました。
##【簡単なものを作る】##
↓こちらを参考にさせていただきました!
uGUIでボタンのクリックイベントを取得
ありがとうございます。
- (何もインポートせず) New Projectを作成する
- Hierarchy > UI > Button でボタンを作成する
- 下記C#スクリプトを作成し、先ほど作成したボタンにAdd Componentする
using UnityEngine;
using UnityEngine.UI;
using System.Collections;
public class TestButtonClick : MonoBehaviour {
// Use this for initialization
void Start () {
Debug.Log("Start()");
}
// Update is called once per frame
void Update () {
}
/// ボタンをクリックした時の処理
public void OnClick() {
Debug.Log("Button click!");
}
}
これだと、押せているのかどうか端末側からは確認できないので、
画面にログを出力するようにします。
↓こちらを参考にさせていただきました。
【Unity】 ゲーム画面でログを出力する機能
ありがとうございます!
↑より、
NyDebug.csと
NyDebugTest.csを作成し、
先ほど作成したボタンに順にAdd Componentします。
※ ここまでで追加したcsファイルは、すべてAssetsフォルダ直下に投げ込んでいます。
フォルダ振り分けなどは各自の環境でご対応ください。
##【動作確認する】##
ひとまず、簡単なものはできたので
各プレイヤーで確認します。
・Build Settings > Web Player にスイッチ
iOS Unity Remoteでタッチ操作が効く、のを確認できました。
(手持ちのAndroid端末が働いてくれないので、
バンバン働いてくれるiPad miniで確認します)
・Build Settings > Android にスイッチ
iOS Unity Remoteでタッチ操作が効かない、のを確認できました。
Android端末にインストールするとタッチ操作が効く、のを確認できました。
(この後、Web Playerにスイッチしましたが
iOS Unity Remoteでタッチ操作が効かない、ままでした)
※ Player Settings > Default Orientation > Landscape Right
にして書き出しています。
-> Android優先で作る場合は
iOS Unity Remoteはやらないほうがよさそう
(リモートはあまり安定していない気がするが、いちいちインストールする手間は省ける)
##【続いて本題に...】##
※ 期待する動作:ジョイスティックをタップして反応するかどうか
Menu > Assets > Import Package > CrossPlatformInput
で、CrossPlatformInputをインポートし、
MobileStickSingleControlをHierarchyに追加します。
- インポートするパッケージは、Unity5のStandardAssets(Unity5をインストールすると入ってます)です。
→ https://www.assetstore.unity3d.com/jp/#!/content/32351
こちらも上記過程と同様にAndroid端末にて
期待する動作を確認できました。
(ジャンプボタンは未確認ですが動いてるはず?)
というか、Unityのエディタ上のGame画面でマウスクリックで動きますね(Build Settings > Androidにて)
続いて、
CrossPlatformInputのように
Charactersをインポートし、
ThirdPersonCharacters < Prefabs < ThirdPersonControllerをHierarchyに追加します。
→ 期待する動作を確認できました。
ここで、不要そうなファイルを消しつつ
期待する動作となるかを確認していきます。
‥‥ EventSystemを削除すると
期待する動作にならなくなりました。
ハッ!!(;゚Д゚)
(またしょーもないことでハマってしまった。。
##【結論】##
EventSystemは大事!!
Hierarchyから EventSystem を消すと期待する動作にならなくなっていました。
この EventSystem は、
Hierarchy > UI > Button でボタンを作成した際に
同時にHierarchyに追加されます。
StandardAssetsをインポートしてプレハブを読み込んだ時には存在しないので、
上記の期待する動作とならない
ということでした。
(逆に最初はなぜいけていたのかは闇)
↓こちらに記述がありました。
Unity5版Standard Assetsを使って仮想ジョイスティックを実装
##【メモ】##
・apkのインストールにDropboxを使う場合は、
Dropboxの設定からキャッシュ削除をする
(多分ないとは思いますがキャッシュをインストールして「何も変わんないなぁ」とか言う無限ループになっているかと思うと恐いので念のため)
##【余談】##
・未知のことが多い。嘆いていても仕方ないので日々勉強!
・そろそろJelly BeanからLolipopに乗り換えたい。
3年ぐらい前の端末なのでメモリもダメダメで非常に重い。