# Randomizing tile textures

 0 This is what I tried. Successfully generated a 10x10 grid of tiles. The tiles are coming out textureless, however. Help!!! ``````var Cliff : Material; var Dirt : Material; var Grass : Material; var Rock : Material; var Tile : Transform; var aTextures : Array; function Start() { aTextures = new Array(Cliff, Dirt, Grass, Rock); for (x=0;x<10;x++) { for (y=0;y<10;y++) { Instantiate(Tile, Vector3(x*10 ,y*10 , 0), Quaternion.Euler(90,0,0)); Tile.renderer.materials[1] = aTextures[Random.Range(0, aTextures.length)]; } } } `````` more ▼ asked May 14 '11 at 03:45 PM JuggmasterZero 1 ● 1 ● 1 ● 1 add new comment (comments are locked) 10|3000 characters needed characters left ▼ Viewable by all users

 0 Okay, I got it working by setting the first material instead of trying to do the second. Here's the code: ``````var matCliff : Material; var matDirt : Material; var matGrass : Material; var matRock : Material; var preTile : Transform; var aMaterials : Array; function Start() { for (x=0;x<10;x++) { for (y=0;y<10;y++) { aMaterials = Array(matCliff, matDirt, matGrass, matRock); var thisTile = Instantiate(preTile, Vector3(x*10 ,y*10 , 0), Quaternion.Euler(90,0,0)); thisTile.renderer.material = aMaterials[Random.Range(0, aMaterials.length)]; } } } `````` After I got that working, I was messing around with the code to highlight tiles. Here's that code: ``````function OnMouseOver() { renderer.materials[1].color = Color(.5,.5,.5,.5); } function OnMouseExit() { renderer.materials[1].color = Color(.5,.5,.5,0); } `````` Why does this code work and trying to assign a material this way does not? more ▼ answered May 14 '11 at 07:01 PM JuggmasterZero 1 ● 1 ● 1 ● 1 add new comment (comments are locked) 10|3000 characters needed characters left ▼ Viewable by all users
 0 A couple things; one, you're trying to change renderer.materials on the actual prefab, instead of the instance. Instead do this: ``````var thisTile = Instantiate(Tile... thisTile.renderer... `````` Two, renderer.materials doesn't work that way. It's likely you meant renderer.material anyway, but in case you actually are using multiple materials per tile, then you need to do something like ``````var materialsArray = tile.renderer.materials; materialsArray[1] = ... tile.renderer.materials = materialsArray; `````` more ▼ answered May 14 '11 at 03:55 PM Eric5h5 80.3k ● 42 ● 132 ● 521 Ah, okay, thanks. The script reference was really vague on the material part. May 14 '11 at 03:58 PM JuggmasterZero add new comment (comments are locked) 10|3000 characters needed characters left ▼ Viewable by all users

By Email:

Topics:

x5099
x1478
x99

asked: May 14 '11 at 03:45 PM

Seen: 751 times

Last Updated: May 14 '11 at 03:45 PM