public void SetCloth(GameObject cloth) { texturesHolder.gameObject.SetActive(true); foreach (var textureSelectionItem in texturesSelection) { if (textureSelectionItem) { Destroy(textureSelectionItem.gameObject); } } foreach (var texture in texturesHolder.GetComponentsInChildren <Image>()) { if (texture.transform != texturesHolder) { Destroy(texture.gameObject); } } texturesSelection.Clear(); for (int i = 0; i < availableTextures.Length; i++) { PointerSelectableImage selectableTexture = Instantiate <PointerSelectableImage>(Resources.Load <PointerSelectableImage>("Texture Item"), texturesHolder); selectableTexture.GetComponent <Image>().sprite = availableTextures[i]; texturesSelection.Add(selectableTexture); } if (currentCloth) { currentCloth.SetActive(false); } cloth.SetActive(true); foreach (var item in cloth.GetComponentsInChildren <Renderer>(true)) { item.enabled = true; } currentCloth = cloth; //Here we find the size controller script and set the current object for scaling FindObjectOfType <SizeController>().currentObject = cloth; foreach (var textureSelectionItem in texturesSelection) { textureSelectionItem.onSelected += () => { foreach (var item in cloth.GetComponentInChildren <Renderer>().materials) { item.mainTexture = textureSelectionItem.GetComponent <Image>().sprite.texture; } } } ; } }
void Start() { for (int i = 0; i < clothesSelection.Length; i++) { //Avoiding bugs int index = i; //We assign every image to it's model when the image has been Selected clothesSelection[i].onSelected += () => SetCloth(clothes[index]); } for (int i = 0; i < availableTextures.Length; i++) { PointerSelectableImage selectableTexture = Instantiate <PointerSelectableImage>(Resources.Load <PointerSelectableImage>("Texture Item"), texturesHolder); selectableTexture.GetComponent <Image>().sprite = availableTextures[i]; texturesSelection.Add(selectableTexture); } texturesHolder.gameObject.SetActive(false); }