ここから本文です

Unityでゲーム制作をしています。 ある、コントローラでゲームのオブジェクト生...

KEIKOFOXさん

2017/10/923:48:36

Unityでゲーム制作をしています。

ある、コントローラでゲームのオブジェクト生成を管理しており、
プレイヤーもそのコントローラで生成するようにしています。

コントローラではプレイヤーの生成とともに、そのプレイヤーに
「プレイヤーコントロールスクリプト」「Rigidbody」のコンポーネントを
AddComponentで追加しています。

Unityのウィンドウ上部のPlay(再生)ボタンを押すと、しっかりとプレイヤーの生成、
スクリプトのアタッチ、Rigidbodyのコンポーネントの追加もできているのですが、
スクリプトに関してはPlay(再生)をするたびに同じスクリプトがアタッチされてしまいます。

Rigidbodyは何度Playしても1度しか追加されません。

何か防止策のようなものはあるのでしょうか?

UnityVer:2017.1.0f3

閲覧数:
21
回答数:
1

違反報告

ベストアンサーに選ばれた回答

dea********さん

2017/10/1014:48:54

AddComponentの前にGetComponentして、「スクリプトが既にアタッチされているかどうか」を調べればいいかと思います。
(アタッチされていないならGetComponentでnullが返ってくるので、ifで条件分岐すればよいかと)

ちなみにRigidbodyは「必ず1オブジェクトに1つ」と決まっているので一度しかアタッチされません。

  • 質問者

    KEIKOFOXさん

    2017/10/1021:20:56

    rigidbodyはそういう理由だったのですね!
    ありがとうございます。
    GetComponentの仕様がまだ完全に理解しきれていませんでした。
    というよりも、戻り値くらい把握しておけって感じですけど。

    わざわざ、こんなど素人の質問に答えていただきありがとうございました。

返信を取り消しますが
よろしいですか?

  • 取り消す
  • キャンセル

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる