前提・実現したいこと
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!直下のモデルを用いています。
あなたの回答
tips
プレビュー