[Unity] 버튼 클릭하면 다음 스테이지로 넘어가기 / 씬전환
·
공부/Unity
1. Hierarchy 창에서 버튼을 만들어준다. 2. Create Empty로 씬을 관리하는 게임 오브젝트를 만들어주고 Manager 스크립트를 만들어준다. using UnityEngine.SceneManagement; public class LoadManager : MonoBehaviour { public void Play() { SceneManager.LoadScene("FirstStage"); } public void Exit() { Application.Quit(); } } 3. using UnityEngine.SceneManagement; 를 추가해주고 아래 코드를 입력한다. 4. Play 버튼 아래 On Click 설정을 해준다. 표시한 부분에는 @LoadScene이라는 게임 오브젝트를 넣어..
[Unity] 1인칭 FPS 총알 발사하기
·
공부/Unity
내가 원하는 모습 : 마우스 좌클릭 시 prefab 상에 있는 총알이 Player의 총구 위치에서 생성되어 앞으로 발사됨 https://blog.naver.com/ghost365/221380308534 참고 1. 총알이 생성될 위치를 FirePos로 지정 2. flaregun에 마우스 좌클릭 시 일어날 이벤트 조정 public class GunShot : MonoBehaviour { public GameObject bulletFactory; public Transform FirePos; private void Update() { if (Input.GetMouseButtonDown(0)) Shoot(); } void Shoot() { GameObject _bullet = Instantiate(bulletF..
[Unity] Scene씬 전환 시 화면이 어두워지는 오류
·
공부/Unity
Window -> Rendering -> Lighting Auto Generate를 체크 해제해주고, Generate Lighting을 눌러준다. 현재 있는 모든 Scene에서 이 행동을 해주면 Scene을 전환해도 어두워지지않는다.
[Unity] 게임 play 후 스폰되는 player를 mainCamera로!
·
공부/Unity
게임이 재생된 후에 Instantiate되는 player를 mainCamera에 넣어주기 위해서는 SetPlayer라는 함수를 지정해주면 된다. mainCamera를 관리하는 CameraController script에 [SerializeField] GameObject _player; public void SetPlayer(GameObject player) { _player = player; } 간단하게 내용을 추가해준다. 그리고 player를 스폰할 GameScene script에서 SetPlayer 함수를 사용한다. Camera.main.gameObject.GetComponent().SetPlayer(Player); Player를 스폰해준 다음에 SetPlayer 함수를 추가해주면 mainCamera..
[Unity] Instantiate한 Object (Clone)을 없애자
·
공부/Unity
일반적으로 객체를 Instantiate하면 이름 뒤에 (Clone)이 붙는데, 이게 꽤나 거추장스럽다. void PlayerMake() { GameObject go = Instantiate(PlayerPrefab); go.name = PlayerPrefab.name; } 간단하게 go.name = PlayerPrefab.name만 붙여주면 (Clone)이 사라진다.
[Unity] 캡슐 플레이어가 기울면서 혼자 움직이는 현상
·
공부/Unity
Player 이동키를 하나도 누르지 않았는데 밑바닥이 동그래서 혼자 움직이는 오류가 생겼다. Player -> Rigidbody -> Constraints -> Freeze Rotation에 있는 X, Y, Z를 모두 On 상태로 해주면 오류가 사라진다.
[Unity] 조준선(Crosshair) 아주 간단하게 만들기
·
공부/Unity
1. Hierarchy -> 우클릭 -> UI -> Image 2. 화면을 2D로 선택 3. Image를 정중앙으로 고정 4. Width, Height를 5로 변경 5. 원하는 색상으로 변경 6. Image -> Source Image -> Knob 클릭 깔끔한 조준선 완성
[Unity] NullReferenceException: Object reference not set to an instance of an object
·
공부/Unity
NullReferenceException: Object reference not set to an instance of an object UnityEditor.Graphs.Edge.WakeUp () (at :0) UnityEditor.Graphs.Graph.DoWakeUpEdges (System.Collections.Generic.List`1[T] inEdges, System.Collections.Generic.List`1[T] ok, System.Collections.Generic.List`1[T] error, System.Boolean inEdgesUsedToBeValid) (at :0) UnityEditor.Graphs.Graph.WakeUpEdges (System.Boolean clearSlotE..
[Unity] Apply Root Motion
·
공부/Unity
화질이 좀 안 좋지만 잘 보면 Player가 몬스터를 공격한 후에 순간적으로 앞으로 가려는 행동을 하며 실제로 위치가 앞으로 이동하고 있다. 이걸 없애려면 Player -> Animator -> Apply Root Motion을 꺼주면 Player가 공격 모션을 취한 뒤에 앞으로 이동하지 않는다.
[Unity] Animator is not playing an AnimatorController
·
공부/Unity
아주아주 단순한 에러다. Object에 있는 Animator로 가서 가지고 있는 Anmation Controller로 비어있는 Controller를 채워주면 된다.
[Unity] Player가 가라앉아서 움직이는 에러 해결하기
·
공부/Unity
갑자기 Player가 반쯤 잠긴 상태로만 움직이기 시작했다. Transform Position Y축 값이 0.006693959로 지정된 상태로 아무리 바꾸려고 해봐도 바뀌지 않는 상태로 멈춰버렸다. 콘솔창에 아무런 로그도 뜨지 않아서 원인을 알 수 없었다. 결과만 검색해서 인터넷에 나와있는 방법을 하나씩 시도해봤다. 1. Navigation Bake Window -> Al -> Navigation을 누른다. 새로 뜬 창에 있는 Bake 버튼을 누른다. 나는 아무런 변화도 없었다. 2. Position의 Y 변경 기본값인 0으로 설정되어있는 Player의 Transform Position Y를 변경해본다. 나는 2로 변경하고 새로 재생해봤지만 변화는 없었다. 3. Player Rigidbody Collis..
[Unity] 코루틴(Coroutine)이란?
·
공부/Unity
게임 플레이어가 스킬을 사용하는데, 그 스킬이 3초 후에 자동으로 꺼지는 스킬이라고 해보자. 평소에 알던 내용으로 이 스킬을 구현하려면 Update문에 스킬을 넣고, 매 프레임마다 스킬을 검사해서 3초라는 시간이 지난 것을 판단하고 그 후에 스킬을 꺼주어야 한다. 3초가 지난 것을 알기 위해 Update문을 사용한다는 것은 쓸데없는 반복이 나오는 매우 비효율적인 방법이다. 이럴 때 사용할 수 있는 것이 코루틴(Coroutine)이다. 코루틴(Coroutine)을 사용하면 내가 원하는 시기에 필요한 횟수만큼만 함수를 실행시킬 수 있으니 불필요한 행동을 하지 않게 된다. using System.Collections; using System.Collections.Generic; using UnityEngine..
[Coding] 하드코딩이란?
·
공부
코드 내부에 직접 일정 값을 입력해주는 형식을 하드코딩이라고 한다. 단어에서 풍겨오는 느낌 그대로 프로그램에 필요한 값을 직접 때려박는 형식(상수 등). 지금까지 내가 해온 대부분의 코드는 하드코딩으로 작성됐다. ​ 하드코딩은 코드를 작성하기 쉽고, 가독성이 좋지만 보안에 매우 취약하고, 프로그램의 유지보수가 어렵다는 단점이 있다.
[Coding] 같은 내용이 중복되는 함수의 현명한 사용법
·
언어
c#으로 작성된 내용입니다. using System; namespace ConsoleApp1 { class Program { static void Add(int a, int b, string name, int time) { int ab = a + b; int a_b = a - b; Console.WriteLine(ab); Console.WriteLine(a_b); Console.WriteLine($"a의 이름은 {name} 입니다."); Console.WriteLine($"남은 시간은 {time}초입니다."); } static void Add(int a, int b, string name, float time) { int ab = a + b; int a_b = a - b; Console.WriteLine..
[Unity] DontDestroyOnLoad()
·
공부/Unity
Sound의 경우 게임 어디에서도 사용되는 Object다. 어떤 Object는 Scene이 바뀌면서 삭제됐다가 필요한 경우 다시 생성되지만, 계속 필요한 Object는 삭제되는 행위 자체가 쓸데없는 메모리 사용이다. 이때 DontDestroyOnLoad()를 사용해주면 게임이 꺼질 때까지 Object가 삭제되지 않고 필요할 때 언제든 꺼내 쓸 수 있다. https://docs.unity3d.com/ScriptReference/Object.DontDestroyOnLoad.html Unity - Scripting API: Object.DontDestroyOnLoad The load of a new Scene destroys all current Scene objects. Call Object.DontDest..