前提・実現したいこと
Android実機で、実行中のメソッド名や行番号を取得したいです。
そこでStackFrameクラスを使って取得を試みましたが 実機では出来ませんでした.
下記コードを手持ちの端末で実行してみると、
- UnityEditor(PC):期待した動作をしました(0~12までいってNullRefエラー表示).
- スマホ :ボタン押下一発目でNullRefエラー表示(ErrorをCatch).
- タブレット :ボタン押下一発目で強制終了.
となりました.
以上の試したことから、
0. AndroidではStackFrameクラスそのもの(?)が使えない?
0. 同じAndroid端末でもエラーがcatch出来るものと出来ないものがある?
という2つの問題についてご教示ください!
該当のソースコード
c#
1using System.Collections.Generic; 2using UnityEngine; 3using UnityEngine.UI; 4using System; 5using System.Diagnostics; 6using System.Linq; 7 8public class Test : MonoBehaviour 9{ 10 //確認用. 11 public Text text; 12 public Text errorText; 13 14 private int skipFrames = 0; 15 16 private string ShowMessage(int skipFrames) 17 { 18 StackFrame sf = new StackFrame(skipFrames, true); 19 List<string> filePathElementList = new List<string>(); 20 filePathElementList.AddRange(sf.GetFileName().Split('\')); 21 String fileName = filePathElementList.Last(); 22 int lineNumber = sf.GetFileLineNumber(); 23 return skipFrames.ToString() + " : " + fileName + "(" + lineNumber + ") "; 24 } 25 26 //ボタンイベント. 27 public void OnButton() 28 { 29 try 30 { 31 text.text = ShowMessage(skipFrames); 32 ++skipFrames; 33 } 34 catch (Exception e) 35 { 36 errorText.text = e.ToString(); 37 38 } 39 } 40 41}
試したこと
上記ソースコードは
Canvas上においたButtonを押すと,そのメソッドを呼び出した位置と行番号がtextに表示されます.
ボタン押下でStackFrame()に入れる数を大きくして、次の押下でさらに上のスタックフレームを取得します.
補足情報(FW/ツールのバージョンなど)
PC:Windows8.1
スマホ:FREETEL(Android Ver7.0)
タブレット:ASUS MeMO Pad 7 ME572CL (Android Ver5.0.1)
Unity:2017.3.0f3
あなたの回答
tips
プレビュー