자자,, 대장님께 혼나고 배울때 마다 블로그를 작성하고 있습니다. 무려 임시저장이 10개나 생겼네요 협업을 하면서 씬을 교체하는 방법을 알아봅시다! 🕹️ 본인 브랜치 최신 상태로 만들기 협업을 하면서 씬을 교체 할 일은 보통 병합(merge)를 했을 때 이후겠죠? 우선 본인 브랜치를 최신 상태로 만들어줍니다. 저희 팀의 루틴을 적어보자면 (github desktop 사용) 1. main에서 fetch & pull 2. 본인 브랜치로 돌아와서 3. current branch 클릭 후 Choose a branch to merge into '내 브랜치 이름' 눌러서 main과 병합해주기 4. 메인을 가져왔으니 제 브랜치가 최신으로 업데이트 됐겠죠? 내 브랜치에 변경된 상황 한번 더 commit & push 위..
유니티의 생명주기는 진짜 복잡하고 어쩌고 저쩌고 많은데, 딱 몇가지만 추려서 정리를 해봤다. 내가 이해한대로 글을 바꿔서 적은 것이니, 아래에 참고 할 글을 더 첨부 하겠다. 🌿유니티 생명주기 1. Reset 2. Awake 3. OnEnable 4. Start 5. FixedUpdate 6. Update 7. LateUpdate 8. OnDisable 9. OnDestroy 10. ApplicationQuit 🌿생명주기별 설명 1. Reset Hierarchy창에서 Object를 Reset 2. Awake Reset 후 딱 한 번 실행된다. Reset(초기화) 후 진행되는 것이기 때문에 GameObejct.Find()와 같은 함수를 사용하기 좋다. Coroutine은 사용이 불가하다. 3. OnEnab..
Object가 DestroyZone에 빠지면 Particle입자가 작동하는 기능을 구현했다. 그런데 아무리 동작해봐도 Particle이 코털만큼도 보이지 않기에,, 정말 골머리 앓았는데, Delta Time 문제였다. 해당 문제에 대한 내용과 함께 Particle을 적용하는 방법을 작성하겠다. 1. Particle 오브젝트 생성 2. 스크립트 작성 및 적용 부록. Delta Time 1. Particle 오브젝트 생성 Hierarchy창에서 Empty Object를 만든다. 그리고 만들거나 import한 Particle Prefab을 드래그 앤 드롭으로 하위 오브젝트에 넣어준다. 2. 스크립트 작성 및 적용 나는 DestroyZone에 Object가 닿으면 Particle을 실행하는 조건을 작성 할 것이..
1. 씬 분리하기(씬 만들기) 캐릭터 선택창을 만들기 위해서 씬을 분리했다. 프로젝트에서 Scenes 폴더를 만들어준다. 그리고 위와같은 방법으로 씬을 만들어주면 끝... 노올랍게도 너무 쉬워서 그런지 아무도 안알려줘서 혼자 30분 이것저것 만져봄. 새 프로젝트까지 만들어봤는데 알고보니 동일 프로젝트에서 씬을 바꾸면 된다더라고~ 해당 씬을 더블클릭 해주면 노올랍게도 새로운 씬 등장~ 씬을 분리하는 방법은 협업시에도 유용하게 쓰인다니 잘 알아두는게 좋을듯 2. 씬 전환하기(feat. 기존 씬으로 돌아가기) File > Open Scene > 들어가고 싶은 scene 파일 선택 진짜 쉬운데, 나는 씬 없어져서 광광 울었다고한다.
// 인스턴스 public static GameManager Instance = null; public void Awake() { if (Instance == null) { Instance = this; } } Application.CancelQuit(); 나는 위 코드만 있으면 게임이 알아서 멈추고 어쩌고 하는줄 알았다. 검색을 해봐도 이런 코드만 주구장창 나오는데 저게 아니면 유니티 자체를 종료해야하니(그러면 안됨) 어떻게 해야할지 몰라서 삽질을 좀 해보기로했다. 👾진행 순서 1. 게임 오버 UI 생성(옵션 화면 : GameOver, 다시 하기, 게임 종료) 2. GameManager.cs에 스크립트 작성 3. 적용 👾구현 1. 게임 오버 UI 생성(옵션 화면 : GameOver, 다시 하기, 게임..
👾초기컨셉 작은 얼음 덩어리가 왼쪽 방향으로 이동하면서 플레이어를 밀어냄 여기서 플레이어 속도, 에너미 생성 속도를 변경했지만 난이도 조절이 어려운 거 같아서 1. 랜덤한 시간에 따라서 에너미가 생성 2. 일정 확률로 거대한 에너미 생성 3. 에너미끼리 충돌하지 않게 레이어 설정 위 세가지를 진행하여 난이도 조절을 해보겠다. 👾구현 1. 랜덤한 시간에 따라서 에너미가 생성 using System.Collections; using System.Collections.Generic; using System.IO.IsolatedStorage; using UnityEngine; public class EnemyManager : MonoBehaviour { // 현재 시간 float currentTime; // 생..
플레이 존 뒤에 디스트로이 존을 생성했다. 해당 게임 오브젝트의 존재 이유는 과도한 에너미 생성으로 찾아 올 부하 예방과 플레이어의 죽음을 감지하여 게임을 종료시키기 위함이다. 1. 플레이어를 감지하면 유니티 플레이 종료 using System.Collections; using System.Collections.Generic; using UnityEngine; public class DestroyZone : MonoBehaviour { private void OnTriggerEnter(Collider other) { if (other.gameObject.name.Equals("Player")) { Debug.Log("Goodbye Player.."); UnityEditor.EditorApplication..
1. 캐릭터 좌우 회전 카메라는 상하좌우로 회전해야 되지만 캐릭터는 좌우만 회전하면 된다. 카메라를 좌우로 움직이게 만들었던 스크립트를 복붙해서 만들자. public class PlayerRotate : MonoBehaviour { // rotate speed public float roSpeed = 200f; // 회전값 미리 저장 할 변수 float mx; // Start is called before the first frame update void Start() { } // Update is called once per frame void Update() { // 마우스로 입력 받기(좌우) float Mouse_X = Input.GetAxis("Mouse X"); // 값 누적시키기 mx += M..