92 lines
3.1 KiB
C#
92 lines
3.1 KiB
C#
|
using System.Collections.Generic;
|
|||
|
using UnityEngine;
|
|||
|
|
|||
|
[ExecuteInEditMode]
|
|||
|
public class SceneSizeObj : MonoBehaviour
|
|||
|
{
|
|||
|
public Vector2 _OrgPos = Vector2.zero;
|
|||
|
public Vector2 _Size = new Vector2(100, 100);
|
|||
|
|
|||
|
private readonly List<GameObject> _CubesX = new List<GameObject>();
|
|||
|
private readonly List<GameObject> _CubesY = new List<GameObject>();
|
|||
|
private Transform _CubeXBase;
|
|||
|
private Transform _CubeYBase;
|
|||
|
private Vector2 _Orgsize;
|
|||
|
private Camera _SceneCamera;
|
|||
|
|
|||
|
private void Start()
|
|||
|
{
|
|||
|
transform.position = new Vector3(0, 500, 0);
|
|||
|
|
|||
|
var cameraObj = new GameObject("SizeCamera");
|
|||
|
cameraObj.transform.SetParent(transform);
|
|||
|
cameraObj.transform.localRotation = Quaternion.Euler(90, 0, 0);
|
|||
|
cameraObj.transform.localPosition = new Vector3(0, 0, 0);
|
|||
|
_SceneCamera = cameraObj.AddComponent<Camera>();
|
|||
|
_SceneCamera.orthographic = true;
|
|||
|
_SceneCamera.clearFlags = CameraClearFlags.SolidColor;
|
|||
|
|
|||
|
var cubeX = new GameObject("CubeX");
|
|||
|
cubeX.transform.SetParent(transform);
|
|||
|
_CubeXBase = cubeX.transform;
|
|||
|
|
|||
|
var cubeY = new GameObject("CubeY");
|
|||
|
cubeY.transform.SetParent(transform);
|
|||
|
_CubeYBase = cubeY.transform;
|
|||
|
|
|||
|
for (var i = 0; i < 1000; ++i)
|
|||
|
{
|
|||
|
var newBox = GameObject.CreatePrimitive(PrimitiveType.Cube);
|
|||
|
newBox.transform.SetParent(cubeX.transform);
|
|||
|
newBox.transform.localPosition = new Vector3(i, 200, 0);
|
|||
|
if (i < _Size.x)
|
|||
|
newBox.SetActive(true);
|
|||
|
else
|
|||
|
newBox.SetActive(false);
|
|||
|
_CubesX.Add(newBox);
|
|||
|
|
|||
|
var newBox2 = GameObject.CreatePrimitive(PrimitiveType.Cube);
|
|||
|
newBox2.transform.SetParent(cubeY.transform);
|
|||
|
newBox2.transform.localPosition = new Vector3(0, 200, i);
|
|||
|
if (i < _Size.y)
|
|||
|
newBox2.SetActive(true);
|
|||
|
else
|
|||
|
newBox2.SetActive(false);
|
|||
|
_CubesY.Add(newBox2);
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
private void Update()
|
|||
|
{
|
|||
|
transform.position = new Vector3(_OrgPos.x + _Size.x * 0.5f, 500, _OrgPos.y + _Size.y * 0.5f);
|
|||
|
//_SceneCamera.transform.position = new Vector3(_OrgPos.x + 50, 1000, _OrgPos.y + 50);
|
|||
|
_SceneCamera.orthographicSize = Mathf.Max(_Size.x, _Size.y);
|
|||
|
|
|||
|
_CubeXBase.transform.position = new Vector3(_OrgPos.x, -200, _OrgPos.y);
|
|||
|
_CubeYBase.transform.position = new Vector3(_OrgPos.x, -200, _OrgPos.y);
|
|||
|
|
|||
|
UpdateSizeObj();
|
|||
|
}
|
|||
|
|
|||
|
private void UpdateSizeObj()
|
|||
|
{
|
|||
|
if (_Orgsize == _Size)
|
|||
|
return;
|
|||
|
|
|||
|
if (_Orgsize.x > _Size.x)
|
|||
|
for (var i = (int) _Orgsize.x; i > _Size.x; --i)
|
|||
|
_CubesX[i].SetActive(false);
|
|||
|
else
|
|||
|
for (var i = (int) _Orgsize.x; i < _Size.x; ++i)
|
|||
|
_CubesX[i].SetActive(true);
|
|||
|
|
|||
|
if (_Orgsize.y > _Size.y)
|
|||
|
for (var i = (int) _Orgsize.y; i > _Size.y; --i)
|
|||
|
_CubesY[i].SetActive(false);
|
|||
|
else
|
|||
|
for (var i = (int) _Orgsize.y; i < _Size.y; ++i)
|
|||
|
_CubesY[i].SetActive(true);
|
|||
|
|
|||
|
_Orgsize = _Size;
|
|||
|
}
|
|||
|
}
|