前提・実現したいこと
unity,C#でスペースキーを押したら"public Text"に入れたテキストが削除されるようにしたいと思っています。
一度input.getkeydownが発動したら,"pushed"がfalseとなって、Update関数内のif文が以降発動しないようにしたかったのですが,スペースキーを押してテキストが消えた後も,アクセスしようとしていたみたいです。。支障はないとはいえ,エラーが出ないようにしたいので…。よろしくお願いします。
発生している問題・エラーメッセージ
MissingReferenceException: The object of type 'Text' has been destroyed but you are still trying to access it. Your script should either check if it is null or you should not destroy the object.
該当のソースコード
C#
1public class TextDeleteSpace : MonoBehaviour { 2 public Text push; 3 bool pushed; 4 void Start () { 5 pushed = true; 6 } 7 void Update () { 8 if ((Input.GetKeyDown("space")) && (pushed)) 9 { 10 Destroy(push); 11 pushed = false; 12 } 13 } 14} 15
Destroyの前にログを出力してみてはどうでしょうか?
このスクリプトが複数アタッチされているとかありませんか?
ログ出力してみましたが、スペースキーを押して、テキストが消えてしまった後はif文の中身は実行されていなかったようです。
MissingReferenceExceptionが発生しているのは本当にこのスクリプトでしょうか?
もし「pushed」によるDestroy再発動回避に失敗していたとしても、そもそも破壊済みのコンポーネントに再度Destroyを行ってもエラーは発生しないんじゃないかと思うのですが...
いやぁ…このスクリプトで間違いないんですけどね…。。
なるほど...念のためおうかがいしますが、そのコンソール上に現れた「MissingReferenceException: The object of ...」のメッセージをクリックして選択すると、コンソールの下の方にごちゃごちゃとしたメッセージの全文が現れるかと思います(もし表示領域が狭いようでしたら、黒い区切り線をドラッグして広げてみてください)。それはどのような内容でしょうか?
回答5件
あなたの回答
tips
プレビュー