private Material getMaterial(string slotname, int matno) { TBody body = maid.body0; List <TBodySkin> goSlot = body.goSlot; int index = (int)global::TBody.hashSlotName[slotname]; global::TBodySkin tBodySkin = goSlot[index]; GameObject obj = tBodySkin.obj; if (obj == null) { return(null); } List <Material> materialList = new List <Material>(); Transform[] componentsInChildren = obj.transform.GetComponentsInChildren <Transform>(true); for (int i = 0; i < componentsInChildren.Length; i++) { Transform transform = componentsInChildren[i]; Renderer renderer = transform.renderer; if (renderer != null && renderer.material != null && matno < renderer.materials.Length) { return(renderer.materials[matno]); } } return(null); }
/// <summary> /// スロット名とマテリアル番号を指定して、マテリアルオブジェクトを取得する /// </summary> /// /// <param name="slotName">スロット名(列挙型の名前)</param> /// <param name="matNo">マテリアル番号</param> /// <returns>マテリアル ただし、見つからない場合はnullを返す</returns> public Material GetMaterial(string slotName, int matNo) { global::TBodySkin slot = currentMaid.body0.GetSlot(slotName); if (slot.obj == null) { return(null); } var r = GetRenderer(slot.obj, matNo); return(r != null ? r.materials[matNo] : null); }