개인 과제 해설 풀이 2회차
https://velog.io/@sangwon93/TIL-2024.05.14
Position과 Width, Height의 좌측에 위치한
center & middle 이 적힌 사각형 아이콘 클릭
코드로 모자라 Cinemachine까지 활용하여 제작을 했는데, 너무 쉬운 방법이 있어서 다소 충격을 받았습니다.
public class IntroUI : MonoBehaviour
{
// OK 버튼을 누르면 인풋 필드에 입력된 이름 가져오기
public TMP_InputField inputField;
public void OnClickBtn()
{
// 버튼을 눌렀을 때 이뤄져야 할 작업
// 2~10글자 사이
if (inputField.text.Length > 2 || inputField.text.Length < 10)
return;
// 15번 진행 시 작성
DataManager.instance.userName = inputField.text;
// OK를 눌렀을 때 씬 변경
SceneManager.LoadScene(1);
}
}
public class DataManager : MonoBehaviour
{
public static DataManager instance;
public string userName;
private void Awake()
{
if(instance == null)
{
instance = this;
DontDestroyOnLoad(this.gameObject);
}
}
}
public class PlayerName : MonoBehaviour
{
TMP_Text nameText;
void Start()
{
nameText = GetComponent<TMP_Text>();
nameText.text = DataManager.instance.userName;
}
}
public class IntroUI : MonoBehaviour
{
public TMP_InputField inputField;
// 배열로 캐릭터 이미지 추가
public Sprite[] CharacterImage;
// Image 중 UnityEngine.UI.Image 선택
public Image seletedcharacter;
public void ChoiceCharacter(int num)
{
// 넘버를 받아 캐릭터 이미지 선택
selectedcharacter.sprite = characterImages[num];
// 16번 진행 시 작성
DataManager.instance.characterNum = num;
}
public void OnClickBtn()
{
if (inputField.text.Length > 2 || inputField.text.Length < 10)
return;
DataManager.instance.userName = inputField.text;
SceneManager.LoadScene(1);
}
}
public class DataManager : MonoBehaviour
{
public static DataManager instance;
public string userName;
// 숫자도 받을 수 있게 수정
public int characterNum;
private void Awake()
{
if(instance == null)
{
instance = this;
DontDestroyOnLoad(this.gameObject);
}
}
}
public class PlayerController : MonoBehaviour
{
public float speed;
SpriteRenderer spriteRenderer;
public GameObject[] characters;
void Start()
{
spriteRenderer = GetComponentInChildren<SpriteRenderer>();
characters[DataManager.instance.characterNum].SetActive(true);
}
void Update()
{
transform.position +=
(new Vector3(Input.GetAxis("Horizontal"), Input.GetAxis("Vertical"))).normalized
* speed * Time.deltaTime;
Vector3 mousePos = Input.mousePosition;
spriteRenderer.flipX = (mousePos.x < Screen.width/2);
}
}
https://github.com/Kwaksangwon93/homework2
InputField와 배열을 활용하는 방법이 아직 미숙하다 보니 해설을 분석하면서 많은 부분에서 부족함을 크게 느끼게 됨
스크립트끼리 유기적으로 연결되지만 의존성이 높지 않도록 객체지향적으로 구성된 부분에서 많이 놀랐음