unity のパーティクルシステムの中のrendererへのアクセス方法とorderInlayerへのアクセスの仕方がわかりません
色々調べたのですが、どうやら、ParticleSystemとは別にParticleSystemRendererに分かれていることがわかり、これでアクセスをしたのですが、そもそもorderInlayerというのがなくどうしよもない状態になっています。
またParticleSystemRendererでsortingLayerNameというのがあり、これで名前を変えてコードをうったのですが何も変わらなかったのでそもそもParticleSystemRendererコンポーネントというのを使ってアクセスするのかもわからない状態です。
コード for (int i = 0; i < 3; i++) { for(int j = 0; j < effect[6].transform.childCount; j++) { ParticleSystemRenderer particleSystem = effect[6].transform.GetChild(j).GetComponent<ParticleSystemRenderer>(); particleSystem.sortingOrder = i; } Instantiate(effect[5], new Vector2(transform.position.x + x * i,transform.position.y + y * i), angleZ); }
「orderInlayer」はスクリプト上だと「sortingOrder」でいいと思います。
検証方法が何か間違っている可能性があります。やったこと・何が起こっているのかを詳しく記載してください。
(今のコードだと「effect[6]」のsortingOrderを変えたのに「effect[5]」を新規生成しているので何も変わっていないように見えるとかではないでしょうか?)
あー、なるほど。
effect[5]とeffect[6]には同じものが入っていて、大本の素材であるeffect[5]とeffect[5]が複数入っているeffect[6]に分かれています。
やろうとしたことは、大本のeffect[5]をfor文でorderInlayerを+1ずつ上げてeffect[6]がそれを参照してレイヤーの異なるものを順番に3つ生成しようという考えだったのですが、このやり方ではどうやら参照できないということみたいです。
今effect[5]で生成してみたらiの順番通りにレイヤー設定できていました。
とりあえず調べて仮説を立てた通り実行できたので良かったです。
ちなみにeffect[6]の中にはeffect[5]が4つ入っています。
解決して何よりです。何をどうしたか自己回答してベストアンサーを付けてください。
さっきは解決していなかったのですが、今、実装して解決させました。
質問なのですが、prefab化させたものをprefab化したもので参照するときはどうすればよかったですか?
refの元の値を参照するとかならいけるような気がするのですがどうしょうか。
>prefab化させたものをprefab化したもので参照する
仰っている意味がよく分かりません。
まずPrefabオブジェクトを元にInstantiateした時点で、生成後のオブジェクトとPrefabオブジェクトの間には関連が無くなるというか「同じクラスが付いているが別インスタンス」になります。
これ以上は具体的に何がしたいのか把握できないので、整理して別質問としてもらえればと思います。
回答1件
あなたの回答
tips
プレビュー