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

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

新規登録して質問してみよう
ただいま回答率
85.46%
C#

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

Unity3D

Unity3Dは、ゲームや対話式の3Dアプリケーション、トレーニングシュミレーション、そして医学的・建築学的な技術を可視化する、商業用の開発プラットフォームです。

デバッグ

デバッグはプログラムのバグや欠陥を検知し、開発中のバグを取り除く為のプロセスを指します。

Q&A

0回答

1103閲覧

多数のSkinnedMeshRendererとMeshRendererのマテリアルをスクリプトから配列を用いて変える方法とそこで出たエラーについて

退会済みユーザー

退会済みユーザー

総合スコア0

C#

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

Unity3D

Unity3Dは、ゲームや対話式の3Dアプリケーション、トレーニングシュミレーション、そして医学的・建築学的な技術を可視化する、商業用の開発プラットフォームです。

デバッグ

デバッグはプログラムのバグや欠陥を検知し、開発中のバグを取り除く為のプロセスを指します。

0グッド

0クリップ

投稿2020/08/12 13:15

前提・実現したいこと

C#でunity-chan!のアバターを C を押したら透明にするという機能を実装しようとしています。
とりあえず1つできそうな方法が見つかり実装してみたのですが、以下のエラーメッセージが出ました。

まだすべて読んでいないと思いますが、よろしければこの方法以外にもとてもおおざっぱでいいので、こんなのがいいんじゃない?みたいな方法がありましたら教えていただきたいです。

発生している問題・エラーメッセージ

NullReferenceException UnityEngine.Component.GetComponent[T] () (at <f38c71c86aa64e299d4cea9fb7c715e1>:0) Chameleon.ChameLeon (System.Boolean CLenable) (at Assets/CS_Scripts/Chameleon.cs:23) UnityChan.UNITYCHAN.Start () (at Assets/CS_Scripts/UNITYCHAN.cs:72)

↑UNITYCHAN.csはChameleon.ChameLeonの中身をデバッグログだけにしたらエラーが出なかったので、おそらく関係ありません。
そのためChameleon.csのみ載せます。

該当のソースコード

Chameleon.cs

1using System.Collections; 2using System.Collections.Generic; 3using UnityEngine; 4 5public class Chameleon : MonoBehaviour 6{ 7 public Material[] NomalMaterialsForSMR;//mes-root下が先 8 public Material[] NomalMaterialsForMR;//4tu 9 public Material SpecialMaterials; 10 11 public SkinnedMeshRenderer[] U_SMRenderer ;//同上 12 public MeshRenderer[] U_MRenderer;//4tu 13 14 public void ChameLeon(bool CLenable) 15 { 16 //以下の19と4は決まった長さなので定数にしています 17 for (int i = 0; i < 19; i++) 18 { 19 NomalMaterialsForSMR[i] = GetComponent<Material>(); 20 } 21 for (int i = 0; i < 4; i++) 22 { 23 NomalMaterialsForMR[i] = GetComponent<Material>(); 24 } 25 26 if (CLenable){ 27 for (int i = 0; i < 19; i++){ 28 U_SMRenderer[i].material = SpecialMaterials; 29 } 30 for (int i = 0; i < 4; i++) 31 { 32 U_MRenderer[i].material = SpecialMaterials; 33 } 34 } 35 if(!CLenable) 36 { 37 for (int i = 0; i < 19; i++) 38 { 39 U_SMRenderer[i].material = NomalMaterialsForSMR[i]; 40 } 41 for (int i = 0; i < 4; i++) 42 { 43 U_MRenderer[i].material = NomalMaterialsForMR[i]; 44 } 45 } 46 } 47} 48

試したこと

何かがセットされていないことがわかったのでUnityの画面を指さし確認しました(ヨシ!????)ちゃんとすべてそろってました。
SkinnedMeshRenderer及びMeshRendererの公式スクリプトAPI(Skinned~はこちら)と、この質問を見て構文などを確認し、VisualStudioのコンパイラーエラーも出ていないのであっているだろうと思っています。

ただ1つ問題だと思っていることは、今回の場合MeshRenderer及びSkinnedMeshRendererに割り当てられているマテリアルがすべてそれぞれ1つずつなのでこのスクリプトで問題なくなっていますが、2つ以上の場合また変わってくるので、そこで何らかのエラーが生じているのかなぁと思ってます。

補足情報

各ソフトのバージョン
Unity 20193.0f6
VisualStudio 2019 community 16.7.1(latest)

今回の質問にかかわる使用アセット
Unity-Chan!Model version 1.2.2のunity-chan!直下のモデルを用いています。

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

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

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

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

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

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.46%

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

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

質問する

関連した質問