[Unity 강의] 뱀서라이크 강의(컨텐츠 기초)

업데이트:

카테고리:

태그: , ,




1. 리소스 관리

✔ Sprite, Sounds, Font 등
✔ Sprite, Sounds, Animation 으로 나누어 관리?
✔ player, monster 오브젝트에 관련된 것으로 나누어 관리?
뭐가 나은지 고민해보고 사용하기.





1. SceneManager

✔ 씬을 관리하는 매니저 GameObject를 하나 생성, SceneManager(Script)로 관리
✔ 씬에서 사용할 오브젝트의 원본(Prefab)을 가지고 있는 Script
✔ 게임 시작시 SceneManager오브젝트가 모든 리소스를 담아두고 진행하면서 사용

using UnityEngine;

public class SceneManager : MonoBehaviour
{
    public GameObject _slimePrefab;
    public GameObject _goblinPrefab;
    public GameObject _snakePrefab;

    GameObject _slime;
    GameObject _goblin;
    GameObject _snake;

    void Start()
    {
        GameObject monsterObjects = new GameObject() { name = "@Monsters" };

        _slime = GameObject.Instantiate(_slimePrefab);
        _goblin = GameObject.Instantiate(_goblinPrefab);
        _snake = GameObject.Instantiate(_snakePrefab);

        //_slime.transform.parent = monsterObjects.transform;
        _goblin.transform.parent = monsterObjects.transform;
        _snake.transform.parent = monsterObjects.transform;

        _slime.name = _slimePrefab.name;
        _goblin.name = _goblinPrefab.name;
        _snake.name = _snakePrefab.name;

        _slime.AddComponent<PlayerController>();

        Camera.main.GetComponent<CameraController>().Target = _slime;
    }

    void Update()
    {
        
    }
}





Find 문제점

✔ 생명주기 find 이후 생성되면 찾지 못한다. ✔ 현재 씬의 모든걸 가지고있는 SceneManager 를 통해 부여하기.

SceneManager를 통해 CameraController에서 필요한 Target 찾기

using UnityEngine;

public class SceneManager : MonoBehaviour
{
    public GameObject _slimePrefab;
    GameObject _slime;
    void Start()
    {
        _slime = GameObject.Instantiate(_slimePrefab);
        Camera.main.GetComponent<CameraController>().Target = _slime;
    }
}


using UnityEngine;

public class CameraController : MonoBehaviour
{
    public GameObject Target;
    
    void Start()
    {
        Target = GameObject.FindWithTag("Player");
    }

    void Update()
    {
        if (Target == null) 
        {
            return;
        }

        //TODO
        transform.position = new Vector3(Target.transform.position.x, Target.transform.position.y, -10);
    }
}






이것저것 메모

Sprite, UI 차이

✔ sprite, UI 의 차이
✔ Sprite - 카메라 화면에 실질적으로 있는
✔ UI - 카메라와 상관없이 화면에 표시



카메라

✔ 카메라 = LateUpdate (모든업데이트 실행 후 카메라)



이동방향

✔ normalized 방향정보 ( moveDir.normalized; )





체크요소

✔ Animation 만드는거 2개 이미지 드래그 그롭하면 가능
✔ Prefabs 작업시 override 체크
✔ 배경 작업할때 - Order in Layer 규칙 정하기.
✔ 리소스 관리 규칙 정하기(오브젝트별, 폴더분류).
✔ Order in Layer 규칙 정하기.
✔ 게임 플레이에 따라 순차적으로 작업 (플레이어이동 -> 스킬 -> 드랍)





잡담, 일기?

파이팅




📔

댓글남기기