質問するログイン新規登録

質問編集履歴

12

2021/01/29 08:43

投稿

cushionA
cushionA

スコア90

title CHANGED
File without changes
body CHANGED
@@ -70,4 +70,9 @@
70
70
  どうかこちらも気が向きましたらご教授くださいませ)
71
71
 
72
72
  **補足情報(FW/ツールのバージョンなど)**
73
- Unity 2019 3,7f1
73
+ Unity 2019 3,7f1
74
+
75
+
76
+ 追記
77
+ AddressablesでAddressables.InstantiateAsync().Resultで生成したオブジェクトを渡すことができるようです。
78
+ 大変失礼しました。

11

コードの間違いを訂正

2021/01/29 08:43

投稿

cushionA
cushionA

スコア90

title CHANGED
File without changes
body CHANGED
@@ -62,7 +62,8 @@
62
62
  よろしくお願いいたします。
63
63
 
64
64
 
65
+ (また、本筋とは違いますし本当に図々しいのですが、一つ気になることがあります。
65
- (また、本筋とは違いますし本当に図々しいのですが、プロファイラのメモリ使用量の変動を見ていてたまにGCが起きていることに気が付きました。
66
+ プロファイラのメモリ使用量の変動を見ていてたまにGCが起きていることに気が付きました。
66
67
  何故ならメモリの線グラフが増えては減るジグザグになり、Monoの使用量が2MBほど増えて減るのを繰り返していたからです。
67
68
  ゲームプログラミングなら最初に全てのメモリを確保しておくのが望ましいかと思われますが、このようなジグザグになるコードは修正した方がよいでしょうか?
68
69
  一応LINQの削除やコレクションの使いまわしなどはできうる限りで行っています。

10

誤字。

2020/08/30 04:11

投稿

cushionA
cushionA

スコア90

title CHANGED
File without changes
body CHANGED
@@ -66,4 +66,7 @@
66
66
  何故ならメモリの線グラフが増えては減るジグザグになり、Monoの使用量が2MBほど増えて減るのを繰り返していたからです。
67
67
  ゲームプログラミングなら最初に全てのメモリを確保しておくのが望ましいかと思われますが、このようなジグザグになるコードは修正した方がよいでしょうか?
68
68
  一応LINQの削除やコレクションの使いまわしなどはできうる限りで行っています。
69
- どうかこちらも気が向きましたらご教授くださいませ)
69
+ どうかこちらも気が向きましたらご教授くださいませ)
70
+
71
+ **補足情報(FW/ツールのバージョンなど)**
72
+ Unity 2019 3,7f1

9

2020/08/29 14:04

投稿

cushionA
cushionA

スコア90

title CHANGED
File without changes
body CHANGED
@@ -2,15 +2,15 @@
2
2
 
3
3
 
4
4
  こんにちは。
5
- 少し長くなりますが質問の方読んでいただければ幸いです。
5
+ 少し長くなりますが質問の方に目を通していただければ幸いです。
6
6
 
7
7
  僕は現在2Dのアクションゲームを作っています。
8
8
  そして魔法を実装するにあたってオブジェクトプールについて調べていたところ、疑問が湧いたので知恵をお借りさせていただこうと思い立った次第です。
9
9
 
10
- 今のところテスト用の火の玉を飛ばす魔法をAddressables.InstantiateAsyncとAddressables.ReleasePrefabをインスタンス化して使っています
10
+ 今のところテスト用の火の玉を飛ばす魔法をAddressables.InstantiateAsyncとAddressables.Release、それからPrefabを使って実装しています
11
11
  しかしインスタンス化とDestroy(僕はReleaseを使っていますが)はとても重いとのことなのでオブジェクトプールという手法について調べてみました。
12
12
 
13
- しかしオブジェクトプールの解説での例はいずれも弾幕ゲームのように二十、三十と弾丸を撒き散らすようなゲームを想定しており、さらに下記のページのようにオブジェクトプールを行わない方が効率的な場合もあると言及しているサイトもありました。
13
+ ですがオブジェクトプールの解説での例はいずれも弾幕ゲームのように二十、三十と弾丸を撒き散らすようなゲームを想定しており、さらに下記のページのようにオブジェクトプールを行わない方が効率的な場合もあると言及しているサイトもありました。
14
14
 
15
15
  [参考にしたページの一つ](https://github.com/unity3d-jp-tutorials/2d-shooting-game/wiki/%E7%AC%AC01%E5%9B%9E-%E3%82%AA%E3%83%96%E3%82%B8%E3%82%A7%E3%82%AF%E3%83%88%E3%83%97%E3%83%BC%E3%83%AA%E3%83%B3%E3%82%B0)
16
16
 

8

書式改善

2020/08/28 13:43

投稿

cushionA
cushionA

スコア90

title CHANGED
File without changes
body CHANGED
@@ -65,5 +65,5 @@
65
65
  (また、本筋とは違いますし本当に図々しいのですが、プロファイラのメモリ使用量の変動を見ていてたまにGCが起きていることに気が付きました。
66
66
  何故ならメモリの線グラフが増えては減るジグザグになり、Monoの使用量が2MBほど増えて減るのを繰り返していたからです。
67
67
  ゲームプログラミングなら最初に全てのメモリを確保しておくのが望ましいかと思われますが、このようなジグザグになるコードは修正した方がよいでしょうか?
68
- 一応LINQの削除やコレクションの使いまわしなどは行っています。
68
+ 一応LINQの削除やコレクションの使いまわしなどはできうる限りで行っています。
69
69
  どうかこちらも気が向きましたらご教授くださいませ)

7

誤字修正

2020/08/28 11:52

投稿

cushionA
cushionA

スコア90

title CHANGED
File without changes
body CHANGED
@@ -29,7 +29,7 @@
29
29
  しかしこうなると逆にプールしない方がいいオブジェクトが分かりません。
30
30
  一度壊すと復活しない隠し通路に繋がる壁とかボスとかでしょうか?
31
31
 
32
- オブジェクトプールとはどのくらいの規模で最適となるのか諸先輩方のアドバイスをいただければ幸いです。
32
+ 一応下で今回はどちらがいいのかの検証をしてみますが、オブジェクトプールとはどのくらいの規模で最適となるのか諸先輩方のアドバイスをいただければ幸いです。
33
33
 
34
34
  どうぞよろしくお願いいたします。
35
35
 

6

コードの間違いを訂正

2020/08/28 11:44

投稿

cushionA
cushionA

スコア90

title CHANGED
File without changes
body CHANGED
@@ -33,5 +33,37 @@
33
33
 
34
34
  どうぞよろしくお願いいたします。
35
35
 
36
+
37
+ **検証結果**
38
+
36
- 追記:現在両者の負荷をロファで比較すべく準備中
39
+ オブジェクトールはこちらのサトのコドを使用して実装しました
40
+
41
+ [Akira_Kido_N様の 「Unityで簡単☆オブジェクトプール」](https://qiita.com/Akira_Kido_N/items/b5fa0c1ef324e57b0c28)
42
+
43
+ そしてこちらのメソッドはAddressables.InstantiateAsyncで生成したオブジェクトはプールできなかったのでInstantiateメソッドを使用したことを記しておきます。
44
+ また、プールの最大量は五個にしました。
45
+ 実験の条件はプールする場合としない場合で断続的に五個ずつの火の玉を飛ばしてメモリの平均使用量と最高使用量を比較しました。
46
+
47
+
37
- しかしどような場面使うアドバイスやはりあると嬉しいのでよろしくお願いたし
48
+ 肝心結果すが、下記画像ようにメモリの負荷プール側が勝っていました
49
+
50
+ プールしてない方
51
+ ![プールせず](e5ed8c8681b3816b5133500a8ae6ddc7.png)
52
+
53
+ プールした方
54
+ ![プールした](f665a8284a41db182d4e60dcdd37c7e4.png)
55
+
56
+ 平均的に見てメモリ使用量は20MBほどプールしてない方が軽いです。
57
+
58
+ よって今回の場合はプールしない方がよさそうですが、もしなにか間違えていたら教えてください。
59
+ それから、プールを使用する場面について何かアドバイスがあれば教えてください。
60
+
61
+ この手の検証にはまだ不慣れなので、なにか結果の提示に不備がありましたらそちらもご指摘くださいませ。
62
+ よろしくお願いいたします。
63
+
64
+
65
+ (また、本筋とは違いますし本当に図々しいのですが、プロファイラのメモリ使用量の変動を見ていてたまにGCが起きていることに気が付きました。
66
+ 何故ならメモリの線グラフが増えては減るジグザグになり、Monoの使用量が2MBほど増えて減るのを繰り返していたからです。
67
+ ゲームプログラミングなら最初に全てのメモリを確保しておくのが望ましいかと思われますが、このようなジグザグになるコードは修正した方がよいでしょうか?
68
+ 一応LINQの削除やコレクションの使いまわしなどは行っています。
69
+ どうかこちらも気が向きましたらご教授くださいませ)

5

2020/08/28 11:43

投稿

cushionA
cushionA

スコア90

title CHANGED
File without changes
body CHANGED
@@ -31,4 +31,7 @@
31
31
 
32
32
  オブジェクトプールとはどのくらいの規模で最適となるのか、諸先輩方のアドバイスをいただければ幸いです。
33
33
 
34
- どうぞよろしくお願いいたします。
34
+ どうぞよろしくお願いいたします。
35
+
36
+ 追記:現在両者の負荷をプロファイラーで比較すべく準備中。
37
+ しかしどのような場面で使うのかのアドバイスはやはりあると嬉しいのでよろしくお願いいたします。

4

2020/08/28 10:53

投稿

cushionA
cushionA

スコア90

title CHANGED
@@ -1,1 +1,1 @@
1
- Unityオブジェクトプールについて
1
+ Unityオブジェクトプールを使用すべき状況について
body CHANGED
File without changes

3

2020/08/28 10:18

投稿

cushionA
cushionA

スコア90

title CHANGED
File without changes
body CHANGED
@@ -5,7 +5,7 @@
5
5
  少し長くなりますが質問の方読んでいただければ幸いです。
6
6
 
7
7
  僕は現在2Dのアクションゲームを作っています。
8
- そして魔法を実装するにあたってオブジェクトプールについて調べていたところ疑問が湧いたので知恵をお借りさせていただこうと思い立った次第です。
8
+ そして魔法を実装するにあたってオブジェクトプールについて調べていたところ疑問が湧いたので知恵をお借りさせていただこうと思い立った次第です。
9
9
 
10
10
  今のところテスト用の火の玉を飛ばす魔法をAddressables.InstantiateAsyncとAddressables.ReleaseでPrefabをインスタンス化して使っています。
11
11
  しかしインスタンス化とDestroy(僕はReleaseを使っていますが)はとても重いとのことなのでオブジェクトプールという手法について調べてみました。

2

2020/08/28 09:21

投稿

cushionA
cushionA

スコア90

title CHANGED
File without changes
body CHANGED
@@ -1,6 +1,10 @@
1
1
  **質問内容**
2
2
 
3
+
4
+ こんにちは。
5
+ 少し長くなりますが質問の方読んでいただければ幸いです。
6
+
3
- 現在2Dのアクションゲームを作っています。
7
+ 僕は現在2Dのアクションゲームを作っています。
4
8
  そして魔法を実装するにあたってオブジェクトプールについて調べていたところ疑問が湧いたので知恵をお借りさせていただこうと思い立った次第です。
5
9
 
6
10
  今のところテスト用の火の玉を飛ばす魔法をAddressables.InstantiateAsyncとAddressables.ReleaseでPrefabをインスタンス化して使っています。

1

2020/08/28 09:20

投稿

cushionA
cushionA

スコア90

title CHANGED
File without changes
body CHANGED
@@ -1,8 +1,9 @@
1
1
  **質問内容**
2
2
 
3
- 現在2Dのアクションゲームを作っていて、魔法を実装するにあたってオブジェクトプールについて調べています。
3
+ 現在2Dのアクションゲームを作っています。
4
+ そして魔法を実装するにあたってオブジェクトプールについて調べていたところ疑問が湧いたので知恵をお借りさせていただこうと思い立った次第です。
4
5
 
5
- 今のところテスト用の火の玉を飛ばす魔法をAddressables.InstantinateAsyncとAddressables.ReleaseでPrefabをインスタンス化して使っています。
6
+ 今のところテスト用の火の玉を飛ばす魔法をAddressables.InstantiateAsyncとAddressables.ReleaseでPrefabをインスタンス化して使っています。
6
7
  しかしインスタンス化とDestroy(僕はReleaseを使っていますが)はとても重いとのことなのでオブジェクトプールという手法について調べてみました。
7
8
 
8
9
  しかしオブジェクトプールの解説での例はいずれも弾幕ゲームのように二十、三十と弾丸を撒き散らすようなゲームを想定しており、さらに下記のページのようにオブジェクトプールを行わない方が効率的な場合もあると言及しているサイトもありました。
@@ -10,7 +11,8 @@
10
11
  [参考にしたページの一つ](https://github.com/unity3d-jp-tutorials/2d-shooting-game/wiki/%E7%AC%AC01%E5%9B%9E-%E3%82%AA%E3%83%96%E3%82%B8%E3%82%A7%E3%82%AF%E3%83%88%E3%83%97%E3%83%BC%E3%83%AA%E3%83%B3%E3%82%B0)
11
12
 
12
13
  そこで質問なのですが、オブジェクトプールはどのような場面で使うのかをどうか教えていただきたいです。
13
- また、魔法に使うとしてオブジェクトプールを行うのは魔法装備後に装備してる魔法を検出してその魔法のオブジェクトをプールするような運用でいいのでしょうか?
14
+ また、魔法に使うとしてオブジェクトプールを行うのは魔法装備後に装備してる魔法を検出してその魔法のオブジェクトのみをプールするような運用でいいのでしょうか?
15
+ あらかじめすべての魔法のオブジェクトをプールすることはしない方がいいですか?
14
16
 
15
17
  個人的に使えるのかなと思っている場面は
16
18
 
@@ -19,9 +21,9 @@
19
21
  ・継続的にオブジェクトを吐くステージギミック
20
22
  ・ロードで復活する障害物
21
23
 
22
- このくらいでしょうか……
24
+ このくらいでしょうか。
23
25
  しかしこうなると逆にプールしない方がいいオブジェクトが分かりません。
24
- 一度壊すと復活しない隠し通路に繋がる壁とかでしょうか?
26
+ 一度壊すと復活しない隠し通路に繋がる壁とかボスとかでしょうか?
25
27
 
26
28
  オブジェクトプールとはどのくらいの規模で最適となるのか、諸先輩方のアドバイスをいただければ幸いです。
27
29