using System.Collections; using System.Collections.Generic; using UnityEngine; public class MyTile : MonoBehaviour { public List elementObj = new List(); public List terrainTile; private bool isEntry = false; // Start is called before the first frame update void Start() { } public void AddElement(GameObject element) { elementObj.Add(element); element.gameObject.SetActive(isEntry); } public void AddSplitTerrain(Terrain tile) { terrainTile.Add(tile); } public void Show() { bool del = true; while (del) { del = false; foreach (var item in elementObj) { if (item == null) { elementObj.Remove(item); del = true; break; } else { item.SetActive(true); } } } } public void Hide() { bool del = true; while(del) { del = false; foreach (var item in elementObj) { if (item == null) { elementObj.Remove(item); del = true; break; } else { item.SetActive(false); } } } } private void OnTriggerEnter(Collider other) { if (other.gameObject.layer == LayerMask.NameToLayer("Enemy")) { bool ifFind = elementObj.Find(delegate (GameObject item){ return item == other.gameObject; }); if(ifFind) { return; } elementObj.Add(other.gameObject); } if (other.gameObject.layer != LayerMask.NameToLayer("CameraCube")) { return; } isEntry = true; Show(); } private void OnTriggerExit(Collider other) { if (other.gameObject.layer == LayerMask.NameToLayer("Enemy")) { elementObj.Remove(other.gameObject); } if (other.gameObject.layer != LayerMask.NameToLayer("CameraCube")) { return; } isEntry = false; Hide(); } private void OnCollisionEnter(Collision collision) { if (collision.gameObject.layer == LayerMask.NameToLayer("Enemy")) { bool ifFind = elementObj.Find(delegate (GameObject item) { return item == collision.gameObject; }); if (ifFind) { return; } elementObj.Add(collision.gameObject); } if (collision.gameObject.layer != LayerMask.NameToLayer("CameraCube")) { return; } isEntry = true; Show(); } private void OnCollisionExit(Collision collision) { if (collision.gameObject.layer == LayerMask.NameToLayer("Enemy")) { elementObj.Remove(collision.gameObject); } if (collision.gameObject.layer != LayerMask.NameToLayer("CameraCube")) { return; } isEntry = false; Hide(); } }