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

업데이트:

카테고리:

태그: , ,




1. 리소스 관리

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





1. GameScene

✔ 씬을 관리하는 매니저 GameObject를 하나 생성, GameScene(Script)로 관리
✔ 씬에서 사용할 오브젝트의 원본(Prefab)을 가지고 있는 Script
✔ 게임 시작 시 GameScene 오브젝트가 모든 리소스를 담아두고 진행하면서 사용
✔ 현재 드래그 앤 드롭으로 할당 -> 나중에 Addressable로 할당

using UnityEngine;

public class GameScene : 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;
    }
}





Find 문제점

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

GameScene을 통해 CameraController에서 필요한 Target 찾기

using UnityEngine;

public class GameScene : 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 규칙 정하기.
✔ 리소스 관리 규칙 정하기(오브젝트별, 폴더 분류).
✔ 게임 플레이에 따라 순차적으로 작업 (플레이어 이동 -> 스킬 -> 아이템 드롭)





잡담, 일기?

파이팅




📔

댓글남기기