Question by
hanystylz · Apr 25, 2017 at 12:52 PM ·
unity 5uimaterial renderer
this is my Unity UI material picker script, i have problems. One is that i called Plane function from my script, but when i play the plane doesnt appear, also , on im getting an error message on //miniature.GetComponents().material.mainTexture = ...
using System.Collections; using System.Collections.Generic; using UnityEngine;
public class materialmenu : MonoBehaviour { public GameObject objectchangematerial; public int index; public GameObject[] miniatures; void creatematerialmenu()
{
GameObject materialmenuobj = new GameObject("materialmenuobj");
materialmenuobj.transform.SetParent(transform);
materialmenuobj.layer = 8;
Material [] materials = Resources.LoadAll<Material>(objectchangematerial.name + "/materials");
miniatures = new GameObject[materials.Length];
foreach(Material material in materials)
{
GameObject miniature = GameObject.CreatePrimitive(PrimitiveType.Plane);
miniature.layer = 8;
miniature.name = material.name;
miniature.transform.localScale = new Vector3(0.1f, 0.1f, 0.1f);
miniature.transform.position = new Vector3(0.0f, -index);
miniature.transform.SetParent(materialmenuobj.transform);
//miniature.GetComponents<Renderer>().material.mainTexture = Resources.Load<Texture2D>(objectchangematerial.name + "/miniatures/");
miniatures[index] = miniature;
index++;
}
Vector3 screenpoint = GameObject.Find("Camera").GetComponent<Camera>().ScreenToWorldPoint(new Vector3(0, Screen.height, 0));
transform.position = new Vector3(screenpoint.x + 0.5f, 0, screenpoint.z - 0.5f);
}
void selectmaterial()
{
if(Input.touchCount == 1)
{
Ray ray = GameObject.Find("Camera").GetComponent<Camera>().ScreenPointToRay(Input.GetTouch(0).position);
RaycastHit hit;
if(Physics.Raycast(ray, out hit, Mathf.Infinity))
{
if(hit.transform.parent == transform.FindChild("matrialmenuobj") )
{
objectchangematerial.GetComponent<Renderer>().material = Resources.Load<Material>(objectchangematerial.name + "/material/" + hit.transform.name);
transform.FindChild("materialmenuobj").transform.Translate(new Vector3(0, 0, Input.GetTouch(0).deltaPosition.y * Time.deltaTime));
transform.FindChild("materialmenuobj").transform.localPosition = new Vector3(0, 0, Mathf.Clamp(transform.FindChild("materialmenuobj").transform.localPosition.z, 0, index - 3));
}
}
}
}
// Use this for initialization
void Start ()
{
creatematerialmenu();
}
// Update is called once per frame
void Update ()
{
selectmaterial();
}
}
Comment
Your answer
Follow this Question
Related Questions
Control ScrollView with arrow keys? 3 Answers
UI buttons sometimes does not detect touch 0 Answers
Scaling font size in Unity 5.0 0 Answers
iPad / iOS and Unity 5.3 : UI disappeard ? 2 Answers
Scoring Points with UI Text 0 Answers