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

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

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

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

Q&A

解決済

1回答

3371閲覧

Animatorを使いながら軽くするには?

taishi_idea

総合スコア27

Unity

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

0グッド

1クリップ

投稿2018/12/20 00:38

編集2018/12/20 06:40

Unityで2Dゲームを作ってます。Animatorを付けたオブジェクトを生成するため↓の画像のようにpublicで取得してinstantiateしているのですが、これだけあると重くなってしまいます。効率の良いアニメーションの実装方法はほかにありませんでしょうか?
jpeg)ゲ


【補足】
それぞれのオブジェクトには↓のようにAnimatorが付いており、オブジェクトが生成されるとそのオブジェクトのAnimatorが作動してオブジェクトが動きます。どのオブジェクトも理想的に動いているのですが、起動時間が重いので、より早く処理できる方法を求めている状態です。
イメージ説明
コードはプレイヤーの入力に対しての関数を実行させて単純にInstantiateさせています。

C#

1 if (Kind == 0) 2 NormalChargeFunc(); 3 if(Kind==1) 4 AttackChargeFunc();            5  } 6 7void NormalChargeFunc() 8 { 9 Instantiate(NormalCharge); 10 Instantiate(NormalCharge2); 11 }

重いのはロード時間です。Nexus5でandroidビルドしたところ、13秒ほど起動に時間がかかります。(動物タワーバトルは6秒ほど)intel corei5搭載のマウス製の3万のパソコンで5秒ほどです。 unityは2018.2.2f1です。

profilerを見てみたところ、Renderingが一番重い原因で、Animationのチェックを外してもprofilerはほとんど変化しなかったので、Animatorが原因ではないということでしょうか...?

【Rendering含む】
イメージ説明
【Rendering含まない】
![イメージ説明

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

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

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

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

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

sakura_hana

2018/12/20 02:41

「Animatorを付けたオブジェクトを生成する」とはどういう意味でしょうか? このプレハブ群が何を示していて、最終的にオブジェクトとAnimatorがどうなるのが理想なのか不明です。(出来れば生成のコードも添えてください。Animatorを使っているのが原因ではなく生成コードが重い可能性もあります) また、「重い」というのはロード時間(例えばシーン開始時)なのか、動作時間(例えばアニメーションしている最中)なのか。そしてUnityのバージョン、確認している媒体(Macのエディタ上、iPhone8上など)、実測時間(〜秒)を添えてください。
taishi_idea

2018/12/20 06:41

補足させていただきました 詳しい修正依頼ありがとうございます!
sakura_hana

2018/12/20 08:17

生成元のオブジェクト(溜めreal_1等)はプロジェクトビュー内に存在するプレハブですか? それとも元々シーン上にあるオブジェクトですか? バックアップを取った後、スクリプトからこのオブジェクト群の変数を一旦削除、生成部分もコメントアウトして動作させてみてください(さらに後者の場合はシーン上にある元オブジェクトも削除してください)。 それで読み込み時間が変わらなかったらAnimatorとは無関係と言えます。 Profilerを見るに、もうちょっと削れるかもしれませんが一応平均80fpsぐらいは出ているのでそこまで問題ではないように思います。あとは起動時に突出した山が出てると思うので、そこから原因を探るといいと思います。(「Deep Profile」をオンにするとメソッド単位で探れます)
taishi_idea

2018/12/22 07:43

画像のmax imageを小さくしたら軽くなりました!ありがとうございました!
guest

回答1

0

ベストアンサー

Animatorが付いているといことは、SpriteRendererが付いていると思います。
SpriteRendererにアタッチされているSpriteを全て外した状態でプレハブ化してください。(Spriteが付いた状態でプレハブ化してしまうと、プレハブロード時にSpriteもロードされてしまう為)

また、Spriteのサイズも大きすぎないか確認してください。
大きい場合は、InportSettingsの、MaxSizeを変えることで、テクスチャサイズを小さくした状態でビルドに含むことが出来ます。

それでもダメな場合は、プロファイラーを確認して、メモリに何が読み込まれているかを確認してください。数メガクラスの大きなテクスチャがあった場合、小さくしてみてください。

それでもダメな場合、怪しいゲームオブジェクトを一旦非アクティブにして、起動してみてください。

投稿2018/12/20 07:54

ganta7188

総合スコア436

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

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

taishi_idea

2018/12/20 12:39

回答ありがとうございます! プレハブロード時にSpriteもロードされてしまうとどういう問題があるのですか? Spriteを外してinstantiateさせると見えなくなってしまいます
ganta7188

2018/12/20 18:01

起動時間が遅い原因が、大量のスプライトのロード時間だと推測しています。 実際に使うタイミングまでは読み込まなくてもいいのではないかと思います。 animatorが動いていれば自動的にスプライトがセットされるので、最初にスプライトがセットされている必要はなかったと思いますが・・・表示されないのは謎ですね・・・
taishi_idea

2018/12/22 07:43

画像のmaxsizeを小さくしたら見違えるように軽くなりました!ありがとうございました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問