質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Unity3D

Unity3Dは、ゲームや対話式の3Dアプリケーション、トレーニングシュミレーション、そして医学的・建築学的な技術を可視化する、商業用の開発プラットフォームです。

Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

Q&A

解決済

1回答

3041閲覧

Unity)スクリプトを複数のSceneで参照=NG?

navesanta

総合スコア198

Unity3D

Unity3Dは、ゲームや対話式の3Dアプリケーション、トレーニングシュミレーション、そして医学的・建築学的な技術を可視化する、商業用の開発プラットフォームです。

Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

0グッド

0クリップ

投稿2018/07/17 23:22

Unityで複数のSceneを使う場合で同じスクリプトが利用したかった場合、
1つのスクリプトを複数のSceneで参照するとクラッシュの元だという情報をネット上で見かけました。

具体的に言うと
Script1を作成
SceneAを作成して空のGameObjectにScript1をアタッチ
SceneBを作成して空のGameObjectにScript1をアタッチ
SceneAやSceneB内のGameObjectにOnclickなどでScript1を使う

質問は
1、こういった使い方をすると規模が大きくなるとクラッシュしたりするとのことですが本当でしょうか?
(Sceneごとに、Scriptを参照ではなく別に作成したほうが良いとのこと)
2、もし1が本当なら原因はどうしてでしょうか?
3、こういったUnityの設計的な基礎を知る情報はネット上にないでしょうか?

教えて下さい。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

1つのスクリプトを複数のSceneで参照するとクラッシュの元

そんな話は聞いたことが無いです。

クラッシュする原因は色々ありますが(無限ループとかメモリオーバーフローとか)、
それはそもそものコードの書き方が問題なのであって、複数Sceneでの使い回しが原因ではないと思います。

例えば、static変数に大きなメモリを突っ込む(大量にダウンロードした画像とか)
→シーンが切り替わればその変数がクリアされると思い込んで放っておく
→どこかのタイミングで限界を迎えクラッシュ
みたいなケースが考えられますが、これもしっかり管理しておけば問題ありません。

ただ、私が知らないだけかもしれないのでソースを提示してもらえると掌クルーするかもしれないです。


Unityは設計についての公式説明的なものはあまり無かったように思うので、
「unity 設計」で検索して出て来るものを見ていく、というのが泥臭いですが良い方法になるかと。

投稿2018/07/17 23:49

sakura_hana

総合スコア11425

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

navesanta

2018/07/18 06:54

>そんな話は聞いたことが無いです。 下記のブログに記載されていたのを参考にしました。 ★シーンをまたいだオブジェクトでスクリプトを使い回す http://hamazakifactory.hatenablog.com/entry/2015/08/09/075036 このブログに記載されている内容が間違っているのでしょうか?
sakura_hana

2018/07/18 09:22

間違っています。同じ機能を持つスクリプトは同一にすべきです。 (もし修正が発生した場合に全部のスクリプトを直さないといけなくなります) そもそもエディタクラッシュ(Unity強制終了)はほとんど起こらないはずなので、起こったとしたらもっと根本的なミスや思い違いがあると判断すべきです。 そうではなく、NullReferenceエラー(ゲームが停止する)ならばシーンをまたぐ処理ではありがちかと。 例えば「static変数にシーン上のオブジェクトを入れる→シーン遷移する→static変数にアクセス」これだけでも発生します。(ブログ主はシングルトンよく分からんと言っているのであり得そう)
navesanta

2018/07/18 09:26

理解しました。分かりやすい解説ありがとうございました。これからもよろしくお願いします。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問