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

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

ただいまの
回答率

88.60%

(5.6.1ver後)unityにて ビルドするとGEARVRのボタンが効かない

受付中

回答 0

投稿 編集

  • 評価
  • クリップ 1
  • VIEW 1,101

nepitter

score 8

前提・実現したいこと

unity ver5.6.1にて、
GEARVRのボタンが無効(コリジョンなども無効)になっているので
有効にしたいです。

※ユニティ上は正常に動作いたします。
ビルドしたアンドロイド&GEARVRを使用すると
ボタンが無効になっている
※ver5.3までは問題ありませんでした。
※ユニティ初心者なので、専門的な事はわからないです。申し訳ないです。

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

ver5.3の時は問題ありませんでした。

エラーメッセージ
特になし

該当のソースコード

using UnityEngine;
using UnityEngine.EventSystems;
using UnityEngine.UI;
using System.Collections;

// original >> https://forums.oculus.com/community/discussion/comment/219978/#Comment_219978

public class GVRLookInputModule : BaseInputModule {

    // public const int kLookId = -3;
    // public string submitButtonName = "Fire1";
    public string controlAxisName = "Horizontal";
    private PointerEventData lookData;

    private PointerEventData GetLookPointerEventData() {
        Vector2 lookPosition;
        lookPosition.x = Screen.width/2;
        lookPosition.y = Screen.height/2;
        if (lookData == null) {
            lookData = new PointerEventData(eventSystem);
        }
        lookData.Reset();
        lookData.delta = Vector2.zero;
        lookData.position = lookPosition;
        lookData.scrollDelta = Vector2.zero;
        eventSystem.RaycastAll(lookData, m_RaycastResultCache);
        lookData.pointerCurrentRaycast = FindFirstRaycast(m_RaycastResultCache);
        m_RaycastResultCache.Clear();
        return lookData;
    }

    private bool SendUpdateEventToSelectedObject() {
        if (eventSystem.currentSelectedGameObject == null)
            return false;
        BaseEventData data = GetBaseEventData ();
        ExecuteEvents.Execute (eventSystem.currentSelectedGameObject, data, ExecuteEvents.updateSelectedHandler);
        return data.used;
    }

    public override void Process() {
        // send update events if there is a selected object (important)
        SendUpdateEventToSelectedObject();
        PointerEventData lookData = GetLookPointerEventData();
        // use built-in enter/exit highlight handler
        HandlePointerExitAndEnter(lookData,lookData.pointerCurrentRaycast.gameObject);
        if (Input.GetMouseButtonDown (0)) {
        // if (Input.GetButtonDown (submitButtonName)) {
            // eventSystem.SetSelectedGameObject(null);
            if (lookData.pointerCurrentRaycast.gameObject != null) {
                GameObject go = lookData.pointerCurrentRaycast.gameObject;
                GameObject newPressed = ExecuteEvents.ExecuteHierarchy (go, lookData, ExecuteEvents.submitHandler);
                if (newPressed == null) {
                    // submit handler not found, try select handler instead
                    newPressed = ExecuteEvents.ExecuteHierarchy (go, lookData, ExecuteEvents.selectHandler);
                }
                if (newPressed != null) {
                    // eventSystem.SetSelectedGameObject(newPressed);
                }
            }
        }
        if (eventSystem.currentSelectedGameObject && controlAxisName != null && controlAxisName != "") {
            float newVal = Input.GetAxis (controlAxisName);
            if (newVal > 0.01f || newVal < -0.01f) {
                AxisEventData axisData = GetAxisEventData(newVal,0.0f,0.0f);
                ExecuteEvents.Execute(eventSystem.currentSelectedGameObject, axisData, ExecuteEvents.moveHandler);
            }
        }
    }    
}

試したこと

5.3でボタンが動作していたことを確認。
ほかのプロジェクトも5.3までは使用できておりました。

上記スクリプトを「Ebent System」に入れ、代わりに
「Standalone Input Module」のチェックをはずしております。
※5.3でも変えておりません。

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

関係あるかどうかは不明ですが、
「Canvas」の「Render Mode」を「Woled Space」に変更しております。
※下記にて、そのような文言がございましたので関係あるのかも?
(念のため変更してビルド
http://madnesslabo.net/utage/?p=9498

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

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

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

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

  • ただいまの回答率 88.60%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る