I am making a project that contains of a grid of 200 x 200 tiles.
I need a way to send a message to the tile when being hovered on. The message will contain the Sprite Variable so it will change the texture whenever the tile will recieve the message.
TilePlacer
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class TilePlacer : MonoBehaviour {
//textures Go Here!
public Sprite Texture_1_Dirt;
//textures End Here!
public Object Camera;
public int Dimensions = 200;
// Use this for initialization
void Start () {
for (int TileX = 0; TileX < Dimensions; TileX++) {
for (int TileY = 0; TileY < Dimensions; TileY++) {
GameObject TileObject = new GameObject (); //creates the object
TileObject.name = "Tile " + TileX + "," + TileY; // Names the object
SpriteRenderer TileSpriteRenderer = TileObject.AddComponent<SpriteRenderer> (); //adds Sprite renderer
TileObject.transform.position = new Vector3 (TileX , TileY ,0); // moves its position to place
TileObject.AddComponent<Tile> ();
TileObject.SendMessage ("TileUpdate",Texture_1_Dirt);
print ("Made tile " + TileX + "," + TileY);
}
}
}
}
Tile
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Tile : MonoBehaviour {
SpriteRenderer Sprite_Render;
void TileUpdate(Sprite TileSprite){
print ("Request to Update the tile has been recieved for tile:" + transform.position);
Sprite_Render = GetComponent<SpriteRenderer>();
Sprite_Render.sprite = TileSprite;
}
}
CameraMovement
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class CameraMovement : MonoBehaviour {
//textures Go Here!
public Sprite Texture_1_Dirt;
//textures End Here!
public int Dimensions = 200;
// Use this for initialization
void Start () {
}
// Update is called once per frame
void Update () {
if (Input.GetKey ("w")) {
transform.position = new Vector3 (transform.position.x, transform.position.y + transform.position.z / 5, transform.position.z);
}
if (Input.GetKey ("s")) {
transform.position = new Vector3 (transform.position.x, transform.position.y - transform.position.z / 5, transform.position.z);
}
if (Input.GetKey ("d")) {
transform.position = new Vector3 (transform.position.x - transform.position.z / 5, transform.position.y, transform.position.z);
}
if (Input.GetKey ("a")) {
transform.position = new Vector3 (transform.position.x + transform.position.z / 5, transform.position.y, transform.position.z);
}
transform.position = new Vector3 (transform.position.x, transform.position.y, transform.position.z - (Input.GetAxis("Mouse ScrollWheel")*10));
if (transform.position.z > Dimensions) {
transform.position = new Vector3 (transform.position.x, transform.position.y, Dimensions);
}
}
}
BTW: C sharp script only.