[過去ログ] 【ゲームエンジン】Unityなんでも質問スレpart12 (1002レス)
1-

このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
177: 2023/11/25(土)17:11 ID:PO4/Hp6H(2/13) AAS
配列にしてダメだった時のエラー書きなよ
178
(1): 2023/11/25(土)17:14 ID:6mVYgNka(5/13) AAS
>>175
foreachはIEnumerable<T>から継承されたクラス全てで使える(配列、List<T>など)
for文は配列の要素にインデックスで参照できるクラス全てで使える(これも配列、List<T>など)
確かに値が被ってるとIndexOfは無理ですね、そうなるとprevValueのやり方が一番まともかも

>>176
それで配列に入ってたらバケモン
 Array01[i] = Instantiate(...);
省1
179
(2): 2023/11/25(土)17:25 ID:FGDWLLI7(5/15) AAS
>>178
ですよね???
でも入ってるんです、ほんとに。
実行して、ちゃんと理想通りになってるんで
「なんで?」って思って質問させてもらいました。
厳密に記載すると
最初に定義もしてます。
省19
180
(1): 2023/11/25(土)17:28 ID:75MeFtBw(3/3) AAS
>>179
おかしい
181: 2023/11/25(土)17:30 ID:6mVYgNka(6/13) AAS
>>179
えぇ・・・
そのArray01とArray02に外部からアクセスしててそっちでオブジェクトを代入する処理をしてるとかかなあ

 public GameObject[] Array01;

 [SerializeField]
 private GameObject[] Array01;
省1
182
(1): 2023/11/25(土)17:31 ID:6mVYgNka(7/13) AAS
あ、この場合[SerializeField]はなくてもOK
InspectorタブをDebugに切り替えればprivate変数の中身も見れる
183
(1): 2023/11/25(土)17:34 ID:PO4/Hp6H(3/13) AAS
そもそも入ってるかどうか何処でチェックしてる?

START関数の最後に確認したら?
184: 2023/11/25(土)17:37 ID:FGDWLLI7(6/15) AAS
>>180
おかしいって言われましても。。。
ちなみに片方のfor文コメントアウトすると
配列はひとつだけになりますし、、、機能してるとしか。。

>>182
中身も入ってます、といってもprefabオブジェクト内の変数は
すべてプレハブのスクリプトの方で初期化してるんで
省3
185
(1): 2023/11/25(土)17:39 ID:PO4/Hp6H(4/13) AAS
それプレハブだけ見てて、配列見てないやろ
配列にあるか無いかのチェック入れてみろっての
for文終わったとこに
186
(1): 2023/11/25(土)17:40 ID:FGDWLLI7(7/15) AAS
>>183
再生したら、配列に突っ込んだオブジェクトが
10個ずつ描画(実際はfor文内でVector2の座標を増加させながら入れるんで)されてるんで、
これは全部ちゃんと入ってるってことじゃないですか?

そんなにおかしい状態ですか。。どういうことですか?
187: 2023/11/25(土)17:43 ID:CP8hzqFB(3/3) AAS
>>173
それはたしかに
色々あるけどまずは3Dのダンジョンゲーを作りたい

>>174
ありがとう助かります
AnimancerとVeryAnimationはちょうど買おうか迷っていたところでした
特にVeryAnimationはUMotionというのもあって両方カートに入れてました
省1
188: 2023/11/25(土)17:44 ID:PO4/Hp6H(5/13) AAS
だから

for文の後にチェックコード書きなさい

それで分かるから
189
(1): 2023/11/25(土)17:44 ID:FGDWLLI7(8/15) AAS
>>185
すみません、そのfor文のあとに
Debug.Logはなんて記載すればいいですか?

Debug.Log(ここに何書けばいいですか?);
190: 2023/11/25(土)17:45 ID:PO4/Hp6H(6/13) AAS
>>186
描画してんのはただ単にインスタントエイトしてるからやろ
191
(1): 2023/11/25(土)17:47 ID:PO4/Hp6H(7/13) AAS
array01の最初はプレハブですか?ヌルですか

あとはChatGPTに聴け
192: 2023/11/25(土)17:53 ID:PO4/Hp6H(8/13) AAS
>>189

Debug.Log(array01[0].name);

これで何出るか
楽しもうか
193: 2023/11/25(土)17:53 ID:FGDWLLI7(9/15) AAS
>>191
あああああああああああああああああ
None、すなわちnullでした。。。
でもどういうことですか、、、
入ってないなら入ってないで、
なぜ座標がちゃんと入った
プレハブオブジェクトが配列の添字の数だけ並ぶんです?
194
(1): 2023/11/25(土)18:00 ID:6mVYgNka(8/13) AAS
ちょっと待ってDebug.Log(array01[0].name);でヌルポじゃなくてNullなの・・・?
まぁ見なかったことにしよう

Instantiate(obj);はobjを複製してシーンに配置する関数
つまり、複製されたやつが画面上に配置されてたのを見ただけ
Array01にぶち込んだところまでは確認できていなかったということ
195: 2023/11/25(土)18:02 ID:FGDWLLI7(10/15) AAS
でも、なんか納得できません。
for文の両方をコメントアウトして再生押すと
プレハブのオブジェクト自体の存在も無くなります。

for文の処理はプレハブを配列数分作るカギになってると思います。
どういうことでしょうか。。。。。。。
196: 2023/11/25(土)18:06 ID:FGDWLLI7(11/15) AAS
>>194
Debug.Log(array01[0].name);は
オブジェクト参照がオブジェクトのインスタンスに設定されていません
のエラーが出ました。
197: 2023/11/25(土)18:08 ID:6mVYgNka(9/13) AAS
// ログに10回「うんち」と表示する
 for (int i = 0; i < Array01.Length; i++)
 {
  Debug.Log("うんち");
 }

// ログに10回「うんち」と表示して、うんちの末尾に0〜9を割り振る
 for (int i = 0; i < Array01.Length; i++)
省7
198: 2023/11/25(土)18:09 ID:FGDWLLI7(12/15) AAS
Debug.Log(array01[0]);だと
Nullでした。
199: 2023/11/25(土)18:09 ID:6mVYgNka(10/13) AAS
// 画面にobjの複製オブジェクトを10個作る(全部同じ座標)
 for (int i = 0; i < Array01.Length; i++)
 {
  Instantiate(obj, new Vector2(0.0f, 0.0f), Quaternion.identity);
 }

// 画面にobjの複製オブジェクトを10個作る(少しずつ座標を変える)
 for (int i = 0; i < Array01.Length; i++)
省11
200: 2023/11/25(土)18:11 ID:PO4/Hp6H(9/13) AAS
ID:6mVYgNkaさん優しい
惚れそう

ドーンおじもこれくらいやれたらなぁ
201: 2023/11/25(土)18:13 ID:PO4/Hp6H(10/13) AAS
まぁそもそも配列にぶち込むのと
生成処理を一緒にやろーなど
初心者にはラベルが高かったんや
202: 2023/11/25(土)18:15 ID:3GSRLZ8G(1) AAS
言語自体をもう少し勉強したほうがいいレベルだな
203
(1): 2023/11/25(土)18:19 ID:FGDWLLI7(13/15) AAS
とりあえず、これで↓配列内にはプレハブが入ってくれました。
記述からして当然なんですけど。。。
public GameObject[] Array01;
public GameObject[] Array02;
void Start()
{
 Array01 = new GameObject[10];
省16
204: 2023/11/25(土)18:20 ID:FGDWLLI7(14/15) AAS
あ、それぞれVector2(i, 0.0f)です。座標変えながらです。
205: 2023/11/25(土)18:21 ID:Og5vMXyN(1) AAS
unityでファミコンのスプライトオーバーの再現やった人いますか
206
(1): 2023/11/25(土)18:22 ID:6mVYgNka(11/13) AAS
>>203
Instantiate(obj, new Vector2(i, 0.0f), Quaternion.identity);
↑これだけ
これだけで、「座標(0, 0)にobjを複製してシーンに配置する」までやってくれる
for文を消すというか、Instantiateしなければプレハブオブジェクトはシーンに生成・配置されないから並ばんよ
207: 2023/11/25(土)18:27 ID:FGDWLLI7(15/15) AAS
>>206
ああ、つまり配列には入れないけど、
プレハブオブジェクトの生成はしてるってことですね。
ありがとうございます。

相手してくださった皆さまもありがとうございました。
これからも勉強します。
208: 2023/11/25(土)18:31 ID:PO4/Hp6H(11/13) AAS
もし気になるなら

 for (int i = 0; i < Array01.Length; i++)
 {
  Array01[i]=Instantiate(obj, new Vector2(0.0f, 0.0f), Quaternion.identity);
 }
 ちゃんとArray01,Array02の添字分、
プレハブオブジェクトが並んだことです。。
省2
209: 2023/11/25(土)18:33 ID:PO4/Hp6H(12/13) AAS
ま配列やる場合、テスト的には少ないのでやるのが最初はオススメやね最低の数で
210
(1): 2023/11/25(土)19:28 ID:dzXcaoGO(1/2) AAS
PS1のテクスチャとかSFCのドット絵くらいの解像度の画像をローポリ3Dモデルにタイリングで貼りたいんだけど、
タイルを一枚一枚を別の画像として取り込むのと、一枚の画像に詰め込んでシェーダー側で座標を指定して表示するのとでは、どっちのほうが動作時のパフォーマン良いですか?

staticを適用するモデルが99%になる予定で、タイリングはモデル側のUV展開で実装します
211: 2023/11/25(土)19:30 ID:dzXcaoGO(2/2) AAS
>>210
staticを適用するのはシェーダーで座標指定をしない場合の話です
staticにするとシェーダーによる座標していが効かなくなるので
212: 2023/11/25(土)19:31 ID:tUq1KY+K(2/4) AAS
作られたオブジェクトのスクショが有ればすぐ判明したことでは?
213
(2): 2023/11/25(土)20:16 ID:c7/JKC6p(1/6) AAS
こんにちは。
今まで一つのプロジェクトにマテリアルやらスクリプトを詰め込んで、複数のゲーム素材を一緒にしてたんですが
プロジェクトを分けようと思って、新規プロジェクトを開いてそこにスクリプトを移したらスクリプトクラスが見つからなくなってしまいました
原因は恐らくどこかでスクリプトクラス名が被っているファイルが点在しているからだと思うんですけど
別プロジェクトでも同じ名前のスクリプトは使えないのでしょうか?
unity側で被っているのか、VisualStudio側で被っているのかも検討つきません
今からまた調べますが何か対処法ありませんでしょうか
214: 2023/11/25(土)20:30 ID:c7/JKC6p(2/6) AAS
>>213
スクリプトクラスが見つかってないのは新規プロジェクト側でして
スクリプトの名前を変えるのは根本的な解決というか理解に至らないので出来ればやめようと思ってるんですけど。
ファイルがある場所をunityハブのプロジェクト名の横の3点リーダー…からファイルを開いて、新規プロジェクトのアセットのとこに直接ぶち込んだんですよね。
215
(1): 2023/11/25(土)20:38 ID:6mVYgNka(12/13) AAS
>>213
(なんかわいのぶち込むって言い回しがこのスレ内で伝染してるな・・・)
UnityプロジェクトのAssetsフォルダ内に資産一式を配置することになると思うけど、この中でクラス名の重複は認められない
実質的にスクリプトファイル名の重複も認められてない
一応C#のnamespaceっていう仕組みを利用すれば重複可能になるけど、C#の理解が浅いうちは無暗に首ツッコまないほうがいいかも
ということでAssetsフォルダ内の全csファイルのクラス重複確認をすれば解決する・・・はず
216
(1): 2023/11/25(土)20:48 ID:c7/JKC6p(3/6) AAS
>>215
返信ありがとうございます!
一応アセット内での被りは無さそうなんですよね。unityのウィンドウ内で出来る範囲とは別に、PC側のファイルの保存フォルダ側に問題あるのかなって気もしてます
ちなみにこのスレを開くのは初めてなので言い回しは残念ながら偶々です。
217
(1): 2023/11/25(土)21:04 ID:9rpRVGI9(2/3) AAS
>>166
SSDはどれくらいあればいいの?
何とかも初心者やから分からんけど
ゲーム作るのにSSD容量は結構大事なの?
218
(1): 2023/11/25(土)21:22 ID:tUq1KY+K(3/4) AAS
>>217
SSDは持ち運びする&iPhoneなどのバックアップ入れるなら大目に。そうでなけりゃできれば512もあればよろし。
256にするとどうなるかはわかんないけど、最近のアプリを見るとちょっと心許なく。
219: 2023/11/25(土)21:24 ID:tUq1KY+K(4/4) AAS
プロとしてやっていくなら、もりもりでw
最初ちょろちょろ、あとモリモリでもいいけどそれが良いかは結果の後にわかる事なので、最初からモリモリなら本気度マックス、とか形からでw
220
(1): 2023/11/25(土)21:28 ID:c7/JKC6p(4/6) AAS
>>216
PC側のファイルフォルダを見てみたら2つのプロジェクトファイルが作成されてて同じスクリプトファイルが生成されてます
でもそれ以外に不審な点は見つからないですね。これがダメならプロジェクト別でもスクリプトクラスが被ったらダメってことなんですかね…?
VisualStudio側でプロジェクトが分けられていない?とかネットに書いてあったのでVisualStudioも見てみようかな…初心者だし手探りで頭が痛いよ…
221
(2): 2023/11/25(土)21:33 ID:6mVYgNka(13/13) AAS
>>220
Everythingっていうソフトおすすめ
「"C:\aaa" .cs」って検索するとC:\aaaフォルダの下にいる拡張子が.csのファイルを全部一覧表示してくれる
それで特定のプロジェクトフォルダ配下に名前ソートかけて同名のcsファイルが2ついないか見るとか
222: 2023/11/25(土)21:53 ID:c7/JKC6p(5/6) AAS
>>221
ありがとうございます!他に手立てがないんで一旦試してみようかと思います。
ちなみにVisualStudio側はプロジェクト分けられてるっぽいですね。じゃあ何がダメなんだろう
223: 2023/11/25(土)22:15 ID:c7/JKC6p(6/6) AAS
>>221
検索かけてみましたら、先述したファイルに被りがあるのみ。これ以上時間もかけたくないのでスクリプトクラス名を新しくしようと思います。笑
ありがとうございました!
224: 2023/11/25(土)22:19 ID:9rpRVGI9(3/3) AAS
>>218
色々調べてるけど
新型の情報はないのかな?
まあ新型出ても初めは高いだろうし
MacBook AirM2かMacBook ProM3かで悩む
14インチと15インチ、16インチの違いはどう?
225: 2023/11/25(土)23:40 ID:PO4/Hp6H(13/13) AAS
SSD?
君たちまだストレージ保管してんの?

そんなンクラウドでええやん
226: 2023/11/26(日)00:32 ID:m41MARBn(1/2) AAS
どこのクラウドがいいの?
227
(1): 2023/11/26(日)05:23 ID:ZwpA0qEM(1) AAS
やめなよ
228: 2023/11/26(日)06:44 ID:m41MARBn(2/2) AAS
>>227
このハゲ!
229: 2023/11/26(日)07:27 ID:J5rQpI/4(1/14) AAS
完全につまずいてしまいました。どうかお知恵を貸してください。

配列[10]に詰め込んだオブジェクトの中に変数aがあります。
ゲームマネージャーの方で毎回for文で配列の要素内の変数aを確認して、
該当した場合にそのオブジェクトの変数bにtureを代入する。
ということをやりたいです。
文字で説明するとしごく単純な作業なんですが、これがうまくいきません。

自分の考え方としては、ゲームマネージャーの方で配列内を確認するために
省22
230
(1): 2023/11/26(日)07:46 ID:ap8K17/p(1/15) AAS
文面から配列にはGameObjectが入っているものと推測する
それで変数Aや変数Bを定義してるコンポーネントはHogehogeクラスとする
この場合、配列はGameObject[]ではなくHogehoge[]でないといけない
あるいはGameObjectの配列の要素に対してGetComponentしてHogehogeを取得する
 Hogehoge hooo = 配列[i].GetComponent<Hogehoge>();

GameObjectはGameObjectの情報しか持ってないので、Hogehogeの変数を参照しないとHogehogeの情報にはアクセスできない
231: 2023/11/26(日)08:27 ID:m7xu9wcS(1) AAS
エラー本文とコード見てないからわからんけど、書き方的にGameObjectからそのまま参照しようとしてそうだね
232
(1): 2023/11/26(日)09:05 ID:J5rQpI/4(2/14) AAS
>>230
>文面から配列にはGameObjectが入っているものと推測する
その通りです。
>それで変数Aや変数Bを定義してるコンポーネントはHogehogeクラスとする
Hogehogeクラスとします。

>この場合、配列はGameObject[]ではなくHogehoge[]でないといけない

ここの意味が理解できません。
省18
233: 2023/11/26(日)09:27 ID:qtPMCWA8(1/2) AAS
独自クラスをchatGPTで、聞いてね
234
(1): 2023/11/26(日)09:29 ID:qtPMCWA8(2/2) AAS
変数Aを定義したC#よファイルに名前付けたでしょ?
それな、クラス名やぞ
235
(1): 2023/11/26(日)09:47 ID:J5rQpI/4(3/14) AAS
>>234
理解しています。
ここではHogehogeと記載してますが
ちゃんと変数Aを記載しているクラス名を
コードの方では書いてるんです。

それでも>>232に書いたエラーになります。
シングルトンしてないとダメとか、
省2
236: 2023/11/26(日)10:01 ID:J5rQpI/4(4/14) AAS
<gamemanager.cs>←空のオブジェクトにくっつけてます
public GameObject[] Array01;
void Start(){
Array01 = new GameObject[10];
GameObject obj = (GameObject)Resources.Load("プレハブ名");
for (int i = 0; i < Array01.Length; i++)
{Array0[i] = Instantiate(obj, new Vector2(i,0.0f), Quaternion.identity);}
省11
237
(1): 2023/11/26(日)10:02 ID:ap8K17/p(2/15) AAS
// Hogehoge.cs
public class Hogehoge : MonoBehaviour
{
 public int 変数A{ get { return 変数a; } set { 変数a = value; } }
 public bool 変数B{ get { return 変数b; } set { 変数b = value; } }
}

// GameManager.cs
省14
238: 2023/11/26(日)10:30 ID:sKe5WX7u(1/10) AAS
>>235
理解してないからGameobjectの配列作ってるんでしょ、と書こうとしたら
>>237さんが、答え
イケメン

手取り足取りでみんな優しい
これで理解もしないクソプログラマーが生まれる
239
(1): 2023/11/26(日)10:32 ID:ap8K17/p(3/15) AAS
教えすぎないほうがいいのかなあ
240
(1): 2023/11/26(日)10:39 ID:J5rQpI/4(5/14) AAS
>>239
>教えすぎないほうがいいのかなあ

そんなことありません。
正解を教えて頂いたあと理解するため自分で何度も理解する様努めますし。
もちろん、理解しないままでいいやって人もいるでしょうけど
自分は次から自分のものにしないと意味がないとわかっているので
答えを知ったら終わりのつもりありません。
省8
241: 2023/11/26(日)10:48 ID:J5rQpI/4(6/14) AAS
>毎フレーム実行する必要がある場合などは
>GameManager.csのクラス変数に
>Hogehogeの変数を定義

public Hogehoge[] hogehoges;
これでHogehoge型の配列を作っても
hogehogesはまだ空の状態ですよね?
hogehoges = new Hogehoge[10];みたいなのやんないと
省1
242
(1): 2023/11/26(日)10:59 ID:ap8K17/p(4/15) AAS
>>240
C#というかUnityと付き合っていけばいずれパフォーマンスの最適化という壁にぶち当たる日が来る
そうなった時、というかそうなった時には大抵手遅れだから、同じ結果が得られるならコストが低い処理を極力使ったほうがいい

GameObject obj1; という変数があるとして、このobj1にアタッチされたHogehogeコンポーネントにアクセスしたい場合
 Hogehoge hooo1 = obj1.GetComponent<Hogehoge>();
でアクセスすることは可能

ただしGetComponentを1回実行すると、GC.Allocというメモリ上のゴミが発生する上にこれ自体の所要時間も結構なものだから、GetComponentはコストが高い
省3
243
(5): 2023/11/26(日)11:00 ID:ap8K17/p(5/15) AAS
AA省
244: 2023/11/26(日)11:18 ID:ap8K17/p(6/15) AAS
AA省
245
(1): 2023/11/26(日)11:24 ID:sKe5WX7u(2/10) AAS
ホビーストクリエイターならコストとか処理遅いとか気にしなくてもいいよ
ここに来るのはそういうのが大半でしょ

本格的な売り物なら別にだけどね
246: 2023/11/26(日)12:29 ID:RHrCXnE8(1/8) AAS
ホビー云々関係なく、気になる問題は潰した方が将来のためだよ
不要なAPIコール抑えるのはプログラミングの基本
処理負荷気にしないプログラマは仕事でも品質悪いコードを書く
247: 2023/11/26(日)12:33 ID:RHrCXnE8(2/8) AAS
>>242
GetComponentはGC発生しないよ
発生するのはGetComponentsなどの配列返すほう

あと、GetComponentは意外とそこまで遅くない
プロファイラを見るとわかる
248: 2023/11/26(日)12:39 ID:ap8K17/p(7/15) AAS
あああ配列を生成するためのGCが発生してんのか
nameとかtagみたいにアクセスするだけでGCが発生する組だと思ってた

UpdateでGetComponentするなは割とよく言われてる気がする
外部リンク:www.google.com
249: 2023/11/26(日)12:44 ID:sKe5WX7u(3/10) AAS
それの一発目のテラのやつは問題ありませんキリッって、書いてるが

まぁ大してとかある程度とかの体感記事などほとんどがスペック、時間という物を提示しないで、遅いとか重いとか言ってるとこのをベースに広まってるよね

所詮ハードが1年進化するだけでも重さなんか気にするほどじゃねーよ
250: 2023/11/26(日)13:06 ID:RHrCXnE8(3/8) AAS
まじで他人の意見を鵜呑みにしてはいけないとはこのことw
自分はプロファイラ載せてる記事だけ見るようにしてる

ただ、UpdateでGetComponentは無駄なので、キャッシュするに越したことはないとは思ってる
Componentなんてほぼ静的だし
251: 2023/11/26(日)13:13 ID:kOB5vzh5(1/4) AAS
要するに他のスクリプトにアクセスするのにGetComponent使わないと
いけないことを知らないだけだな
252
(1): 2023/11/26(日)13:33 ID:ap8K17/p(8/15) AAS
2022/8/15 サイバーエージェントのパフォーマンスチューニングバイブル
外部リンク:github.com

9.3 コンポーネントの取得
同じ GameObject にアタッチされている他のコンポーネントを取得する GetComponent() も注意が必要な 1 つです。
前節の tag プロパティや name プロパティ同様にネイティブコードで実装された処理を呼び出していることもそうですが、指定した型のコンポーネントを「検索する」コストがかかることにも気をつけなければなりません。
下記サンプルコードでは毎フレーム Rigidbody コンポーネントを検索するコストがかかることになります。頻繁にアクセスする場合は、あらかじめキャッシュしたものを使い回すようにしましょう。

毎フレーム GetComponent() するコード
省5
253: 2023/11/26(日)13:35 ID:ap8K17/p(9/15) AAS
ついでに2022.3.10f1で検証してきた
画像リンク[png]:i.imgur.com

この差を気にするか気にしないかはきのこたけのこ張りの宗教戦争なので、きのこが好きかたけのこが好きかによって意見が真っ二つやね
254: 2023/11/26(日)13:49 ID:sKe5WX7u(4/10) AAS
まぁ初心者のときにやることとして
アップデートでprintするとメチャログ埋まるやん
それを見て、あっやべーアップデートでそういう事しちゃあかんなと思えればいいんでねーかな
printですらこんなに沢山なんだから他の処理やったら大変だ!と思えればキャッシュしてやろーって思わないなら向いてね~ってことで(笑)
255: 2023/11/26(日)14:08 ID:kOB5vzh5(2/4) AAS
俺がGetComponetするのはStartかAwakeの中
それと何かと衝突した時とかの特定のイベント時くらいかな
Updateの中で常時使わないね
256: 2023/11/26(日)14:13 ID:J5rQpI/4(7/14) AAS
神々が言い争ってるみたいですが、
結局、私はupdate()内でGetComponent() を記載しまくっても
さほど問題にはならないということでしょうか?
257: 2023/11/26(日)14:17 ID:RHrCXnE8(4/8) AAS
例えどんなにマシンのスペックが上がったとしても
要求される表現のハードルが上がるだけなので宗教もクソもない
無駄な負荷のかからない「当たり前」のコードを書く習慣をつけておけばいいだけ

PS5やPCゲーム主流の現在でも、何故パフォーマンスチューニングなるものが必要なのか考えればわかる話
1-
あと 745 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.028s