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

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

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

Material-UIは、Material Designを利用可能なオープンソースのReact向けUIコンポーネントキットです。

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Unity

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

Q&A

解決済

1回答

1165閲覧

UNITYのMeshのMaterialをスタート時にランダムで決定するやり方を教えてください。

X_V

総合スコア2

Material-UI

Material-UIは、Material Designを利用可能なオープンソースのReact向けUIコンポーネントキットです。

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Unity

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

0グッド

0クリップ

投稿2021/07/08 14:34

UNITYのMeshのMaterialをスタート時にランダムで決定するコードの書き方がわかりません。
現在はEkeyを押して変更できるところまではできました。

using System.Collections; using System.Collections.Generic; using UnityEngine; public class MaterialsTest : MonoBehaviour { MeshRenderer meshRenderer; bool changeMat = false; [SerializeField] Material[] materials1; [SerializeField] Material[] materials2; // Start is called before the first frame update void Start() { meshRenderer = GetComponent<MeshRenderer>(); } // Update is called once per frame void Update() { if (Input.GetKeyDown(KeyCode.E)) { changeMat = !changeMat; meshRenderer.materials = changeMat ? materials2 : materials1; } } }

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

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

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

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

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

guest

回答1

0

ベストアンサー

開始時にしたいならStartとかにぶちこんでみてください

配列の中からランダムに1個選びたい場合は、配列のLengthで要素数が求められるので
それで乱数を作って、indexに使えばランダムに取り出すことができます

・配列の値をランダムに表示する
https://itsakura.com/csharp-random#s2

投稿2021/07/09 02:32

hogefugapiyo

総合スコア3302

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

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

X_V

2021/07/10 06:50 編集

回答ありがとうございます。 このように書き換えたのですが materials[Random.Range(0, materials.Length)]; にCannot implicitly convert type 'UnityEngine.Material' to 'UnityEngine.Material[]' のエラーが出てしまいます。どのように書き換えたらよいかわかりません。 ご教授いただければ幸いです。 public class MaterialsTest : MonoBehaviour { MeshRenderer meshRenderer; bool changeMat = false; public Material[] materials; // [SerializeField] Material[] materials2; private int i; // Start is called before the first frame update void Start() { //再生するとランダムにマテリアルを割り当て //meshRenderer = GetComponent<MeshRenderer>(); // i = Random.Range(0,1); GetComponent<MeshRenderer>().materials = materials[Random.Range(0, materials.Length)]; } // Update is called once per frame void Update() { //Eキーを押すとマテリアルを変更 /*if (Input.GetKeyDown(KeyCode.Mouse0)) { changeMat = !changeMat; meshRenderer.materials = changeMat ? materials2 : materials1; } */ } }
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問