タッチやフリックが反応しない時がある

UnityからiPadにビルドして、なんとか動作するまでこぎつけましたが、時々タッチやフリックが反応しない時があります。
主に長いセリフの時に起こりやすい現象かと思います。
シャッフルした時のアクションは反応します。何度か振ってると動作するようになります。
これはセリフが長すぎるのでしょうか?
Tagged:

コメント

  • セリフが長すぎることは原因かどうかわかりませんけど、ログにはなにか表示されていますか?
  • アプリとしてiPad上で動かしているので、ログは見えませんが、Unity上では以下の警告がたくさん出ます。
    NullReferenceException: Object reference not set to an instance of an object
    main.OnRenderObject () (at Assets/Scripts/main.cs:38)
  • どこかのデータが取得できてないようなので、問題がありそうですね。

    Assets/Scripts/main.csの38行目でエラーのようなので、その部分ってここに載せられますか?
    できればその周辺のコードもあると特定し易いと思うのですが。
  • 全部で42行しかないので、全部掲載しますね。

    using UnityEngine;
    using System;
    using System.Collections;
    using live2d;

    public class main : MonoBehaviour {
    public TextAsset mocFile;
    public Texture2D[] textures;

    private Live2DModelUnity live2DModel;


    // Use this for initialization
    void Start () {

    Live2D.init ();

    live2DModel = Live2DModelUnity.loadModel(mocFile.bytes);

    for(int i = 0; i<textures.Length; i++)
    {
    live2DModel.setTexture(i, textures[i]);
    }
    }
    // Update is called once per frame
    void Update () {

    }
    void OnRenderObject()
    {
    Matrix4x4 m1=Matrix4x4.Ortho(
    -200.0f, 200.0f,
    200.0f,-200.0f,
    -0.5f,0.5f);
    Matrix4x4 m2 = transform.localToWorldMatrix;
    Matrix4x4 m3 = m2*m1;

    live2DModel.setMatrix(m3);  ←ここが38行目です
    live2DModel.update();
    live2DModel.draw();
    }
    }
  • とりあえず場当たり的な対処ですけど
    OnRenderObjectの最初で
    if(live2dModel==null)return;

    としておけばエラーは消えるかなと思います。
  • 横から失礼しますが、このエラーは実行時に出ているものでしょうか?

    もしOnRenderObjectがエディタ上でも呼び出されているとすれば
    Live2D.init()を通る前に実行されてしまうので
    live2DModelがNullになったままなのではないかなと…。

    もし違っていたら申し訳ありません。
  • む、難しい…o┤*´Д`*├o アァー
    このページをそのままコピペしたのだと思います。

    http://sites.cybernoids.jp/cubism/sdk_tutorial/platform-setting/unity/csharp/createproject

    一応、OnRenderObjectの最初で
    if(live2dModel==null)return;
    をやってみましたがエラーが出てキャラが表示されませんでした><
  • 何らかのエラーが出たのなら、とりあえずそのエラーのログを載せないと
    対応する側も原因の特定が非常に難しくなりますよ。

    それと、エラーが出るタイミング
    (実行時に常時繰り返し出ている。エディタ上で既に出ている。特定の操作時に1度だけ等々)
    もあれば対応がしやすくなるのではと思います。
  • 大変失礼しました。
    OnRenderObjectの最初ということで、この場所でよかったのでしょうか?

    void OnRenderObject()
    {
    if(live2dModel==null)return;
    Matrix4x4 m1=Matrix4x4.Ortho(
    -200.0f, 200.0f,
    200.0f,-200.0f,
    -0.5f,0.5f);
    Matrix4x4 m2 = transform.localToWorldMatrix;
    Matrix4x4 m3 = m2*m1;

    live2DModel.setMatrix(m3);
    live2DModel.update();
    live2DModel.draw();
    }

    そして、以下のエラーが出てます。

    Assets/Scripts/main.cs(31,20): error CS0103: The name `live2dModel' does not exist in the current context

    現在のコンテキストにLive2DModelは存在しない…ですかね?
    (-ω-;)ウーン
  • 単純なスペルミスのエラーのようですね。

    宣言する部分では「private Live2DModelUnity live2DModel;」
    32行目の部分では「if(live2dModel==null)return;」
    dの文字の大文字小文字が異なっています。
  • 助かりました。そのとおりでした。dを大文字にしたらエラーが出なくなりました。
    ただフリックやタッチが反応しなくなるのは、別の理由であることがわかりました。

    クライアントからのフリックやタッチのアクション変更指示で、モーションのフォルダやファイル名が存在しないものを指定している箇所がありました。

    ここで空回りしていたのが原因のようです。

    おさがわせして申し訳ありません。
    ありがとうございました。
Sign In or Register to comment.