変数に文字列を入力した場合の、デバッグツールの挙動の改善のお願い

作成日:
更新日:

F9キーを押すとデバッグ画面が出てきますが、 変数で文字列を入れている場合、 デバッグ画面でエラーが出続けます。

Assets/RPGMaker/Codebase/Runtime/Map/Menu/DebugToolValueItem.cs:166

調べたところ、変数に文字列として入力して、使っていた場合、数値への変換に失敗しているようです。

文字列なので、数値の増減の処理はいらない代わりに、 入力されている文字列情報をコピーして取り出したいです。

そこで変数が、文字列だった場合は、 コピーして取得できるように修正を検討していただけないでしょうか?

以下は、文字列だった場合、 C を押すとクリップボードにコピーされるようにコードを修正したものです。

ご検討のほどよろしくお願いします。

var value = int.Parse(_variableData[_index]);

if (int.TryParse(_variableData[_index], out var value)) { 〜数値の場合の処理〜

} else {     if (Input.GetKey(KeyCode.C))     {         GUIUtility.systemCopyBuffer = _variableData[_index];     } }

01_HHSHQN_5_AH_25_Q157_KVDEBH_1_AE_cbe7da95a1
コメント

作成日:

ご報告・ご提案誠にありがとうございます。

基本的には変数に文字列(数値以外)を格納することは標準機能では想定しておらず、サポート外となります。 頂戴したご意見については今後の改善の参考にさせていただきます。コードまでご提示くださり、誠にありがとうございます!

何卒よろしくお願い申し上げます。


作成日:
更新日:

Webマニュアルに記載されている内容と矛盾します。

ソースコードをみる限り、 意図的にstring型(文字列)として情報を扱っているように見受けらえれます。

その回答は、確認間違いではありませんか?

ちゃんとマニュアルを確認してコメントしており、 ただ、単純により良い製品になってもらいたいとの気持ちです。

コードを提示したのも、開発者様がお忙しいと思い。 少しでも貴重な時間を消費せず、対応できるようにと配慮してのことです。 コピーするという機能が採用されなかったとしても、 TryParse に変えるだけでもエラー出力は消えるんです。

自分だけで使う分には、もう修正して使わせていただいているので あえてフィードバックで報告するのに個人的なメリットはないんです。

私もSEなので、そういう想定じゃなかったと言いたくなる気持ちもわかりますが。。。

01_HJ_5_GTPFMEW_5_METFH_2_R86_NS_1_D_c942e27b2f

作成日:
更新日:

仕様を確認したところ、マニュアルが誤っている可能性が高いことが判明いたしました。 仕様上基本的には、変数には数値(Int型)のみが入る想定となっております。恐れ入りますが、変数に文字列を代入した手順をご教示いただいてもよろしいでしょうか。

ご不便をおかけしてしまい誠に申し訳ございません。何卒よろしくお願い申し上げます。


作成日:
更新日:

アドオンです。

表示させるセリフをプログラムで生成して格納したり、 ゲーム内のデータを記号化して文字列の情報として管理したりしています。

各種ID(画面上のIDではなくて内部の情報の)文字列としてのIDを 変数に入れて管理する使い方も考えたことがあります。

不具合の報告ではないですよ。 デバッグツールは、ゲームの開発者のみが使うツールです。 ゲームのプレイヤーが、使うものでもないです。 今後ゲーム開発する人たちのための改善提案です。

マニュアルの間違いの指摘でもないです。

(この段階になって、  変数を文字列として使うことが標準外とされるのも、とても困ります。)

今の所、変数を文字列として使っていて これは不具合だと思う箇所もないです。

しっかり、セーブデータとしても 文字列として保存してくれていますし、 セリフも正常に表示してくれています。

アドオンの活用も初心者講座に記載されている内容を応用しているくらいです。 ソースコードを改変するような使い方はしていないです。

たしか、どこかに書いてあったと思いますが、 仕様書を開示はしないけど DataManagerはUniteのコアとなるデータだから ここに書いてあるソースコードが仕様だと。 そんなニュアンスの内容を読んだ記憶があります。 そこから間違ってきてしまいます。

「標準」という言葉が意図するのは、 どんな範囲なんでしょう?

私は、Webマニュアルや、初心者講座に書いてあることが 標準という言葉の意味として認識しています。

思っていることが正確に伝えきれなかったようです。 申し訳ありません。


作成日:

ご回答誠にありがとうございます。アドオンをご利用とのことで承知しました。

お伝えした通り、現在のUniteの標準的な(アドオンを入れていない状態の)仕様としては変数への文字列の格納は想定しておりません。マニュアルの記載ミスについては修正を検討しております。ご不便をおかけしてしまい誠に申し訳ございません。 ユーザー様がアドオン等を利用して文字列の格納を自発的に行うことについては、自由にご利用いただいて問題ございません。ただしデバッグツールについては標準機能(アドオンなし)を前提として設計されておりますため、現状において文字列格納時に不具合が発生してしまうことについてはご容赦いただきたく存じます。 頂戴したご意見を参考に、今後の仕様変更も含めて検討してまいります。

何卒よろしくお願い申し上げます。


作成日:

承知いたしました。 アドオンとして利用する際として、 変数を文字列として扱うことは問題ないとのことで安心しました。 標準機能の範囲が、アドオンなしの状態とのことで理解しました。

それであれば不具合でもないですし、 以前のコメントにも書きましたが、 エラーが出ないようにする対処は個人的に対応できており 不都合な点もございません。

ただ、ただ、予想外の展開にビックリしただけです。 文字列として扱えるよう意図的に拡張性高く作っていると思い込んでましたから。 それだけです。

個人的には、変数で文字列として扱えるのは、 普通に良いシステムだと思います。

本件で、よりUniteの理解が深まりました。 ご回答ありがとうございました。