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

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

新規登録して質問してみよう
ただいま回答率
85.35%
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

Q&A

0回答

305閲覧

Editer上では問題なく動作するが実機(Android)で反応しない

yuyu25

総合スコア5

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

0グッド

0クリップ

投稿2020/02/22 16:38

編集2020/02/22 17:07

###実機で反応しない
Unityにてスマホ向けリズムゲームのセレクト画面を作っていて、
上下フリックでタイトルなど譜面の変更、
左右フリックで譜面スピードの変更、
タップで譜面・譜面スピードの決定・ゲームシーンへの遷移
を想定してスクリプトを書いていて、下記の状態から実機にてこれが出来るようにしたいです。
説明が拙い中恐縮ですがお力添えいただければ幸いです。

発生している問題・エラーメッセージ

現状として、Editer上では問題なく動いています。
しかし実機にて同じことをしようとすると譜面情報やスピード設定の情報を読み込むことすら出来ておらず、フリックタップに反応しない状態になっています。

###対象コード

using System.Collections.Generic; using System.IO; using System.Linq; using UnityEngine; using UnityEngine.SceneManagement; // シーン遷移に必要 using UnityEngine.UI; public class SelectorController : MonoBehaviour { [SerializeField] private Text textInformation; [SerializeField] private Text textScrollSpeed; private Vector3 touchStartPos; private Vector3 touchEndPos; private string Direction; bool oneplay; // フォーマット指定文字列(テキストの初期状態から読み込み) private string informationTextFormat; private string scrollSpeedTextFormat; // スクロール速度 private float scrollSpeed = 1.0f; // BMSファイル一覧 private string[] beatmapPaths; private List<BmsLoader> bmsLoaders; private BmsLoader selectedBmsLoader; // 選択中の譜面ID private int selectedIndex = 0; // 譜面の数 private int beatmapCount; private void Start() { // 譜面を検索するフォルダパス var beatmapDirectory = Application.dataPath + "/../Beatmaps"; // BMSファイル一覧を取得・設定 beatmapPaths = Directory.GetFiles(beatmapDirectory, "*.bms", SearchOption.AllDirectories); // 譜面情報を読み込み bmsLoaders = beatmapPaths.Select(path => new BmsLoader(path)).ToList(); selectedBmsLoader = bmsLoaders[selectedIndex]; beatmapCount = bmsLoaders.Count(); // 初期状態のテキスト内容をフォーマットとして保持 informationTextFormat = textInformation.text; scrollSpeedTextFormat = textScrollSpeed.text; // 初期状態でテキストを更新 ChangeSelectedIndex(selectedIndex); ChangeScrollSpeed(scrollSpeed); } void Update() { Flick(); } void Flick() { if (Input.GetKeyDown(KeyCode.Mouse0)) { touchStartPos = new Vector3 (Input.mousePosition.x, Input.mousePosition.y, Input.mousePosition.z); } if (Input.GetKeyUp(KeyCode.Mouse0)) { touchEndPos = new Vector3 (Input.mousePosition.x, Input.mousePosition.y, Input.mousePosition.z); GetDirection(); } } void GetDirection() { float directionX = touchEndPos.x - touchStartPos.x; float directionY = touchEndPos.y - touchStartPos.y; //xがyより絶対値が大きい時。 //if (Mathf.Abs(directionX) < 30 && Mathf.Abs(directionY) < 30) if (Mathf.Abs(directionY) < Mathf.Abs(directionX)) { if (30 < directionX) { //右向きにフリック Direction = "right"; } if (-30 > directionX) { //左向きにフリック Direction = "left"; } //yがxより絶対値が大きい時。 } else if (Mathf.Abs(directionX) < Mathf.Abs(directionY)) { if (30 < directionY) { //上向きにフリック Direction = "up"; } if (-30 > directionY) { //下向きのフリック Direction = "down"; } } else { //フリック量が30以上でXY同量なら Direction = "touch"; //input = false; //return; } if (Direction == "touch") { PlayerController.ScrollSpeed = scrollSpeed; // 譜面を設定 PlayerController.beatmap = new Beatmap(beatmapPaths[selectedIndex]); // シーン切り替え SceneManager.LoadScene("GameScene"); } if (Direction == "up") { ChangeSelectedIndex(selectedIndex - 1); //上フリックされた時の処理 } if (Direction == "down") { ChangeSelectedIndex(selectedIndex + 1);//下フリックされた時の処理 } if (Direction == "right") { ChangeScrollSpeed(scrollSpeed - 0.1f);//右フリックされた時の処理 } if (Direction == "left") { ChangeScrollSpeed(scrollSpeed + 0.1f);//左フリックされた時の処理 } } private void ChangeSelectedIndex(int newIndex) { // 譜面IDを0~譜面数-1 の間に収める selectedIndex = Mathf.Clamp(newIndex, 0, beatmapCount - 1); selectedBmsLoader = bmsLoaders[selectedIndex]; // 楽曲情報 var title = selectedBmsLoader.headerData["TITLE"]; var artist = selectedBmsLoader.headerData["ARTIST"]; var playLevel = selectedBmsLoader.headerData["PLAYLEVEL"]; var notesCount = selectedBmsLoader.noteProperties .Count(x => x.noteType == NoteType.Single) + selectedBmsLoader.noteProperties .Count(x => x.noteType == NoteType.Long) * 2; var minBpm = selectedBmsLoader.tempoChanges.Min(x => x.tempo); var maxBpm = selectedBmsLoader.tempoChanges.Max(x => x.tempo); // テキストを変更 var text = string.Format(informationTextFormat, title, artist, playLevel, notesCount, minBpm, maxBpm ); textInformation.text = text; } private void ChangeScrollSpeed(float newScrollSpeed) { // スクロール速度を0.1~10 の間に収める scrollSpeed = Mathf.Clamp(newScrollSpeed, 0.1f, 10f); // テキストを変更 var text = string.Format(scrollSpeedTextFormat, scrollSpeed); textScrollSpeed.text = text; } }

試したこと

タップ操作のみ、譜面・譜面スピードの決定を除外し、ゲームシーンへの遷移のみを実行させると反応してシーンに移行することが出来ました。しかしそれもタップに反応する場所が画面の角のみとかなり偏った場所のみになってしまいます。

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

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

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

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

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

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

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問