using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class CameraManager : MonoBehaviour
{
public Camera Camera;
public GameObject player;
Transform plTr;
Transform camTr;
void Awake()
{
plTr = player.transform;
camTr = Camera.main.transform;
}
void Update()
{
CamFollowPlayer();
}
void CamFollowPlayer()
{
camTr.position = new Vector3(plTr.position.x, plTr.position.y,
camTr.position.z);
}
}
나중에 cinemachine을 사용할수 있을때는 더 쉬워진다고 한다..
아직은 모르니... 갈!
유저가 값을 입력하기 위해선, InputField를 사용해야한다.
하지만 InputField는 단순히 입력만 하는것이기에 따로 변수에 저장시켜줘야한다.
이름은 상관없다, 그냥 아무 매니저 역할을 할 오브젝트만 만들자
이후 스크립트 작성
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using TMPro;
using UnityEngine.SceneManagement;
public class InputManager : MonoBehaviour
{
public TMP_InputField playerNameInput;
public static string playerName;
private bool isEnoughLongName = false;
void InputName()
{
playerName = playerNameInput.text;
}
void CheckValidName()
{
InputName();
if (1 < playerName.Length && playerName.Length < 11)
{
isEnoughLongName = true;
}
}
public void OnClickChangeToMainScene()
{
CheckValidName();
if (isEnoughLongName)
{
SceneManager.LoadScene("MainScene");
}
}
}
다른씬에서 불러오는것은, public static으로 playerName이 선언되어 있기에
InputManager.playerName으로 호출하면 값이 불러와진다!
구조체는 값형이기에 문제가 없다.
하지만 클래스는 참조형이기에 생성과 초기화가 반복되면
예기치 않은 오류가 일어날 수도 있고,
클래스는 가비지컬렉터에 의해 제거가 되므로,
메모리 누수가 발생할 수 있다.