タッチした場所にオブジェクトを生成
タッチしたポジションを、そのまま渡せばいいじゃない
と思っていたら少しつまずきました。
生成はできているけど、表示されない
以下が最終的に動いたソースですが、
タッチ時のポジションをそのままTouchOnに渡すだけではだめで、
position.z = 10f; // Z方向を設定
を行わないと思った通り動きませんでした。
void Update() { // 押されているかを判定 if (Input.touchCount > 0) { Touch touch = Input.GetTouch(0); position = touch.position; // 位置情報を取得 position.z = 10f; // Z方向を設定 if (touch.phase == TouchPhase.Began) { // タッチ開始 TouchOn(Camera.main.ScreenToWorldPoint(position)); } else if (touch.phase == TouchPhase.Moved) { // タッチ移動 } else if (touch.phase == TouchPhase.Ended) { // タッチ終了 } } } public void TouchOn(Vector3 pos) { GameObject pbl = Instantiate(m_pblObj); pbl.transform.localPosition = pos; }
スクリプトをVisual stdioで起動する
前はできたのにできなくなったので調べてみました
SCRIPTを起動すると、今までは違うエディターが起動するようになってしまいました
ただ、自分の環境では「preference」が「edit」メニューではなく、「Unity」メニューにありました
UNITYで作ったアプリをAppStoreConnectにアップロードするときにつまづいたこと
普段であればXCODE内でコーディング、ビルド、アップロードが完了するのですが、
Unityでアプリを作った時は少し気をつけないといけないことがありました
【問題1】
アップロードしたのにAppstore Connectに反映されない。
xcodeでビルド、アップロードしたのに、一夜置いても反映されていませんでした。
原因はご丁寧にAppstore connectさんからメールが来ていました。
ITMS-90809: Deprecated API Usage - New apps that use UIWebView are no longer accepted. Instead, use WKWebView for improved security and reliability. Learn more (https://developer.apple.com/documentation/uikit/uiwebview).
要はUIWebViewを使わないでねということらしいです
Unityのバージョンが古いといけない模様で、新しいUnityにてビルドしたものであれば大丈夫でした。
【問題2】
archive後、validateにてエラーが発生していました。
Invalid Bundle. You've included the "arm64" value for the UIRequireDeviceCapabilities key in your Xcode project, ~
おたくの作ったアプリ64ビットCPU対応してませんよ?って怒られています。
iOSはiPhone5s以降64ビットになっているので、ちゃんと対応するように作ってねー
ってことなのかな
これもUnity側の設定を見直して解決できました。
この後アップロードは完了しましたが、まだ承認依頼はできておらず。
GameManagerを使ったゲームの進行
GameManagerというオブジェクトを作成して、そこにスクリプトをアタッチ
たとえばGameManager.csというスクリプトを作成して、そこにゲームの進行に関わる処理を記載していく。
他のスクリプトからGameManagerのスクリプトを実行しやすいように、
静的なメンバ変数を用意しておく
using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; public class GameManager : MonoBehaviour { public static GameManager m_instance; public Text m_waveClear; // レベルのテキスト public int m_waveLevel; // ウェーブのレベル // ゲーム開始時に呼び出される関数 private void Awake() { // 他のクラスからプレイヤーを参照できるように // static 変数にインスタンス情報を格納する m_instance = this; } // Start is called before the first frame update void Start() { } // Update is called once per frame void Update() { } public void WaveClear() { // ウェーブクリアオブジェクトを表示 m_waveClear.gameObject.SetActive(true); // 表示文字列を更新 m_waveClear.text = "WAVE" + m_waveLevel + "CLEAR!"; // ウェーブレベルをインクリメント m_waveLevel++; } }
多次元配列を宣言して使えるまで
いろんな言語を味見するたび思う
インクリメントしかり、ループしかり、なんで書き方揃えないんでしょうね
それほどプログラミングが好きなわけではないのでわかりません
swiftでの多次元配列の宣言は以下のサイトを参考にしました
宣言はです
多次元の配列だよーってだけで、要素数は何個だよーって定義はされていないので、
これでhogehoge[1]なんて指定したら怒られる
appendで必要な分追加する
他にいい方法があるかもしれませんが、今のところわかりません
5×5の二次元配列であれば
var hoge = [[Double]]() 〜〜〜中略〜〜〜 for cnt in 0..<5 { hoge.append([0]) for _ in 0..<4 { hoge[Int(cnt)].append(0) } }