모든 토글을 열고 닫는 단축키
Windows : Ctrl + alt + t
Mac : ⌘ + ⌥ + t
메인씬으로 이동하기
inspector -> button -> On Click 에서 버튼 기능 설정
using UnityEngine;
using UnityEngine.SceneManagement;
public class StartButton : MonoBehaviour
{
public void GameStart()
{
SceneManager.LoadScene("MainScene");
}
}
UI - Canvas Render Mode
Canvas의 Render Mode는 UI 요소가 화면에서 어떻게 표시되는지를 결정하는 중요한 설정입니다.
Canvas의 Render Mode는 3가지 옵션으로 나뉩니다
- Screen Space - Overlay
- Screen Space - Camera
- World Space
1. Screen Space - Overlay
- 기본값으로 설정되는 옵션입니다.
- UI 요소가 카메라와 무관하게 화면 상에 오버레이되어 표시됩니다.
- UI 요소는 게임 화면의 상단에 렌더링되며, 카메라의 위치와 회전에 영향을 받지 않습니다.
- 화면 크기에 맞춰 UI 요소들이 자동으로 스케일되고, 화면 해상도에 따라 크기가 조정됩니다.
특징:
- UI 요소가 화면을 항상 덮는 방식으로 표시됩니다.
- 2D UI에 적합하며, 게임 화면을 가리지 않고 UI를 보여주는 데 사용됩니다.
- 카메라의 뷰와 관계없이 UI는 항상 화면 중앙에 고정되어 표시됩니다.
사용 예시:
- 메뉴, 버튼, 텍스트와 같은 일반적인 UI 요소를 사용할 때 적합합니다.
- 예를 들어, 게임의 HUD(Head-Up Display)나 점수판 등의 UI에 자주 사용됩니다.
2. Screen Space - Camera
- UI 요소가 특정 카메라의 뷰에 맞춰 렌더링됩니다.
- Render Camera 속성에 지정된 카메라의 뷰포트 안에서 UI 요소가 렌더링됩니다.
- 이 모드에서는 UI 요소들이 카메라의 위치와 회전에 영향을 받습니다. 즉, 카메라가 이동하거나 회전하면 UI 요소의 위치도 그에 맞게 변경됩니다.
- 이 옵션은 UI가 특정 카메라의 시점에서 표시되어야 할 때 사용됩니다. 예를 들어, 3D 게임의 HUD나 특정 카메라 시점에서만 보이는 UI에 유용합니다.
특징:
- 카메라에 의해 UI가 렌더링됩니다.
- 화면 크기에 관계없이 카메라의 뷰포트 크기에 맞춰 UI가 조정됩니다.
- 3D UI나 카메라에 의존하는 UI를 만들 때 유용합니다.
사용 예시:
- 3D 게임의 UI가 카메라의 뷰에 맞게 표시될 때 사용됩니다. 예를 들어, 3D 월드 공간에서 표시되는 UI나 특정 카메라의 뷰포트 안에서만 보이는 UI입니다.
3. World Space
- UI 요소가 3D 공간에 배치되어 월드 좌표계에서 렌더링됩니다.
- UI는 게임 월드 내의 오브젝트처럼 다루어지며, UI 요소가 3D 공간의 객체처럼 배치됩니다.
- 이 방식은 UI가 3D 오브젝트처럼 이동하거나 회전할 수 있게 하며, 카메라의 시점에 따라 UI가 보이거나 가려집니다.
- 월드 공간에서 UI를 다루는 방식으로, UI 요소가 3D 공간 내에서 다른 오브젝트와 상호작용할 수 있습니다.
특징:
- UI 요소가 3D 공간에 존재하는 것처럼 행동합니다.
- UI 요소를 3D 오브젝트처럼 이동, 회전, 크기 조정할 수 있습니다.
- UI 요소가 3D 환경에서 다른 3D 객체들과 함께 배치됩니다.
- UI 요소가 물리적 공간에서 조작될 수 있습니다.
사용 예시:
- 3D 게임에서 3D 공간에 배치된 UI를 만들 때 사용됩니다. 예를 들어, 3D 오브젝트 위에 표시되는 텍스트나 월드 공간에 있는 UI 요소(예: 3D 레이더, 타겟 거리 표시) 등이 이에 해당합니다.
- UI가 3D 오브젝트의 일부로 작동할 때 유용합니다. 예를 들어, 3D 상호작용 버튼이나 대화 상자가 3D 공간에서 이동할 때 사용됩니다.
마우스 포인터 설정
Camera.main.ScreenToWorldPoint
void Update()
{
Vector2 mousePos = Camera.main.ScreenToWorldPoint(Input.mousePosition);
transform.position = new Vector2(mousePos.x, transform.position.y); //y는 그대로. 좌우만 움직임.
}
Rigidbody 2D - 중력
중력설정
Body Type : Kinematic = 중력의 영향을 안 받겠다는 뜻!
이때는 collider의 is Trigger에 체크! (체크하지 않으면 충돌감지가 안됩니다!)
확률 만들기
void makeCat()
{
Instantiate(normalCat);
if (level == 1)
{
float p = Random.Range(0, 10);
if (p < 2) Instantiate(normalCat); //20%의 확률
}
else if (level >= 2)
{
float p = Random.Range(0, 10);
if (p < 5) Instantiate(normalCat); //50%의 확률
}
}
카드 생성위치 설정
x값엔 4로 나눈 나머지
y값엔 4로 나눈 몫
에 간격(1.4) 곱해주기
void Start()
{
for (int i = 0; i < 16; i++)
{
GameObject go = Instantiate(card);
go.transform.parent = cards;
float x = (i % 4) * 1.4f - 2.1f;
float y = (i / 4) * 1.4f - 3.0f;
go.transform.position = new Vector2(x, y);
}
}
using System.Linq;
LINQ의 주요 기능:
LINQ를 사용하면 컬렉션(배열, 리스트 등)에 대해 다음과 같은 작업을 손쉽게 처리할 수 있습니다:
- 필터링 (Where)
- 정렬 (OrderBy, OrderByDescending)
- 선택 (Select) - 컬렉션의 각 항목에서 특정 속성만 선택할 수 있습니다.
- 그룹화 (GroupBy)
- 집계 (Sum, Average, Count, Max, Min)
랜덤 배열 설정
int[] arr = { 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7 };
arr = arr.OrderBy(x => Random.Range(0f, 7f)).ToArray();
함수 호출 대기시간 걸기
Invoke
지정한 시간 이후에 특정 함수를 호출한다.
Invoke("MethodName", delay)
has exit time - Animator
Has Exit Time는 애니메이션 상태에서 다른 상태로 전환할 때 애니메이션이 끝날 때까지 기다릴지 여부를 설정하는 옵션입니다.
이를 통해 애니메이션의 완전한 재생을 보장할 수 있습니다.
체크 - 애니메이션이 끝날 때까지 기다림
체크 해제 - 즉시 다른 애니메이션으로 전환됨
Transition Duration - Animator
Transition Duration은 현재 애니메이션 상태에서 다음 애니메이션 상태로 전환되기까지 걸리는 시간을 나타냅니다.
이 값을 조정하면 애니메이션 상태 간에 부드러운 전환을 구현할 수 있습니다.
0.25 - 기본값
0 - 즉시 전환
값이 클수록 애니메이션이 부드럽게 전환됨
질문
<30초간 플레이하면 게임이 종료되는 시스템 만들기>
time == 30.0f일 때는 작동이 안되고
timeTxt.text == "30.00" 일때만 작동되는 이유
>>>
Time.deltaTime 값은 밀리초 단위로 바뀌기 때문에 딱 떨어지는 시간으로 반환되기 어려움.
.time값이 30.0001 만돼도 30.0f와는 다른값으로 인식함.
time.ToString("N2") 해주면 소수점 두자리 까지만 변환했기 때문에 30.0001 이었던 값도 30.00 으로 변환되어서 동작되었을 거임. 하지만 시간이 30.01XXX 이었다면 30.01 로 반환 될 수도 있기 때문에
timeTxt.ext == "30.00"을 사용는 것 보다는
if(time >= 30.0f)로 바꾸는 것이 바람직하다.
'내일배움캠프 Unity 9기 > TIL' 카테고리의 다른 글
[Unity/TIL] - 네이밍규칙(코딩스탠다드) (0) | 2025.04.15 |
---|---|
[Unity/TIL] - C# 기본문법 (0) | 2025.04.14 |
[Unity/TIL] - 레벨에 따라 게임 난이도 조정하기 (0) | 2025.04.11 |
[Unity/TIL] - 타임바 만들기 (0) | 2025.04.10 |
[Unity/TIL] - 캐릭터 이동 / 충돌 설정 / 랜덤위치에 생성 / UI 반영 (0) | 2025.04.07 |