본문 바로가기

C#60

[C#][Unity] 오브젝트 생성 위치 제한하기 오늘은 이전에 만든 UI 버튼을 통해 오브젝트를 생성하는 예제에서 오브젝트를 배치 가능한 구역을 제한하는 예제를 만들어 보겠습니다. 방식은 간단합니다. - 오브젝트를 제한된 구역에 배치하려고 할 경우 오브젝트의 색을 눈에 띄게 빨간색으로 변경합니다. - 오브젝트를 제한된 구역에 배치 시 마우스 버튼에서 손을 떼면 오브젝트가 사라집니다. - 오브젝트를 제한되지 않은 구역에 배치하려고 할 경우 오브젝트의 기존 색으로 변경해줍니다. - 오브젝트를 제한되지 않은 구역에 배치 시 이전 예제처럼 오브젝트가 해당구역에 배치됩니다. 아래 링크는 이전 예제입니다. https://stickode.tistory.com/860 먼저 Project창에서 Create -> C# script "ObjectGround"를 생성합니다.. 2023. 7. 25.
[C#][Unity] 내비게이션 시스템(1) NavMesh 란?? Nav 는 내비게이션을 말하고 Mesh라는 단어는 3D에서는 삼각형이나 다각형 여러 개로 면을 구성하는 것을 의미합니다. NavMesh는 Unity 게임 엔진에서 사용되는 내비게이션 시스템입니다. 이 기능을 사용하면 게임 캐릭터나 AI 게임오브젝트가 이동할 수 있는 경로를 자동으로 계산하고 이동할 수 있습니다. NavMesh 시스템은 설정 한 지형 데이터를 분석하여 게임 오브젝트의 이동 가능한 영역을 설정하고, 게임 캐릭터나 AI게임오브젝트가 해당 영역을 따라 이동할 수 있도록 자동으로 경로를 계산해 주는 아주 편리한 기능입니다. 오늘은 이기능을 활용하여 게임오브젝트가 길을 자동으로 찾아 목적지 까지 도달하는 예제를 만들어 보겠습니다. 더 자세한 설명은 아래의 링크에 들어가서 공부해.. 2023. 7. 19.
[C#][Unity] UI 이미지를 드래그해서 오브젝트 생성 오늘은 이전에 만든 마우스로 오브젝트 드래그 앤 드랍 기능을 이용해 UI 버튼을 드래그 했을 때 새로운 오브젝트를 생성하는 예제를 만들어보겠습니다. 아래 링크는 이전 예제입니다. https://stickode.tistory.com/859 먼저 좌측 Hierachy창에서 마우스로 우클릭한 뒤 UI -> Image를 생성해줍니다. (이름은 "CubeCreater"로 지었습니다.) 그 다음 우측 Inspector창 Image -> Source Image에서 이미지를 원하는 이미지로 변경하거나 아래 Color에서 원하는 색으로 변경할 수 있습니다. 그리고 하단 Project창에서 Prefabs 폴더를 만들고 Hierachy창에 있는 Cube를 드래그해서 Prefab으로 만들어 줍니다. (오브젝트를 Prefab으.. 2023. 7. 11.
[C#][Unity] 마우스로 오브젝트 드래그 앤 드랍 오늘은 마우스로 3D Unity Wolrd 생성되어있는 오브젝트 움직이는 예제를 만들어 보겠습니다. 먼저 유니티 Hub에서 New Project 버튼을 누릅니다. 그 후 All templates에서 "3D Core"를 선택하고 Create project 버튼을 눌러서 프로젝트를 생성해줍니다. 그 후 화면 왼쪽 Hierarchy창에서 마우스 우클릭을 해 3D Object -> Plane을 생성하고 Position (0, 0, 0)으로 설정해줍니다. 그 다음 같은 방법으로 3D Object -> Cube를 생성하고 Position (0, 0.5, 0)으로 설정해줍니다. 이제 하단 Project창으로 가 마우스 우클릭을 한 뒤 Create -> Material을 생성하고 해당 Material 클릭 후 우측 I.. 2023. 7. 10.
[C#][Unity] 열거형(Enum) 상수를 문자열로 대치하여 상수에 의미를 부여한다. 단어에 값을 대입하지 않으면 첫번째 값은 0이다. 명시적으로 값을 대입할 경우 그 값부터 순서대로 1씩 증가한다. 값타입인 사용자정의 데이터 타입이다. 카테고리 분류와 같은 경우 열거체를 사용할 수 있다. (숫자를 사용할 경우 어떤 값인지 알 수 없기 때문에) 열거체를 잘하면 카테고리 분류를 잘 할 수 있다. C#에는 치환문(#define) 안돼기 때문에 열거체와 const를 적극적으로 활용해야 한다. ex) enum COLOR { RED, GREEN, BLUE }; enum COLOR { RED = 1, GREEN, BLUE }; enum COLOR { RED, GREEN = 5, BLUE }; ex) using System.Collections; us.. 2022. 12. 16.
[C#][Unity 2D] npc와 대화 시스템 구현 안녕하세요 오늘은 대화시스템을 예제를 진행해보겠습니다. 더보기 환경은 다음과 같습니다. 유니티 버전 - 2021.3.4f1 또한, 앞의 유니티 2D 예제 포스팅들에서 이어집니다. 먼저, 계층구조에서 UI - 패널을 생성합니다. 그 다음 같이생성된 canvas의 Scaler에서 스케일 모드 수정과 해상도를 변경해줍니다. 패널의 이름을 변경해주고 앵커 프리셋을 게임 대화상자가 나올 위치대로 잡아줍니다. 저는 botton - center로 하겠습니다. 패널의 크기를 적당한 크기로 조절해줍니다. 게임탭을 보면서 적절하게 조정하시면 됩니다. 그리고 지금은 넣지는 않지만 추후에 npc의 이미지를 넣을 수 있는 이미지ui를 추가하겠습니다. (UI - 이미지) 추가적으로 npc의 이름과 대화 내용을 넣을 텍스트를 같이.. 2022. 12. 15.
[C#][Unity] 2D 아이템 시간경과시 자동삭제 안녕하세요 오늘은 시간경과시 드롭된 아이템이 삭제되는 예제를 진행하겠습니다. 더보기 기존 예제인 '2D 아이템 자동습득' 에서 이어지는 예제입니다. https://stickode.tistory.com/613 먼저 드롭되는 아이템 오브젝트 PickUpItem 스크립트를 열어주세요. 아래의 코드를 추가하면 됩니다. ttl변수에 설정한 시간이 경과되면 오브젝트를 삭제하는 코드입니다. //PickUpItem.cs [SerializeField] float ttl = 10f; //시간 경과 void Update(){ ttl -= Time.deltaTime; if(ttl pickUpDistance){//아이템 습득 범위보다 멀리 캐릭터가 있는경우 return; } transform.position = Vector3... 2022. 12. 13.
[C#][Unity] 배열(Array) : 다중 배열 : 가변 배열 동일한 데이터 타입의 데이터를 여러 개 저장하기 위한 연속된 메모리 공간이다. 배열은 메모리 크기가 고정이며 실제 값을 사용하는 개수가 고정일 때 사용한다. C#의 배열의 갯수를 지정할 때는 정수 보다는 배열 Length를 사용하여 길이를 구한다. 배열 선언하기 자료형 [] 배열이름 = new 자료형[요소개수]; ex) int[] array = new int[10]; float[] arrf = new float[20]; GameObject[] objs = new GameObject[4]; ex) arr[0] = 1; arr[1] = 2; 배열 초기화하기 배열을 초기화 하기 위해 반복문을 사용한다. int [] array1 = new int [] {1, 3, 5, 7, 9}; string [] weekda.. 2022. 12. 1.
[C#][Unity] 2D 아이템 자동습득 안녕하세요. 오늘은 드롭된 아이템이 날라와서 자동습득하는 예제를 진행하겠습니다. 더보기 기존예제인 '2D 오브젝트 제거시 아이템드랍' 에서 이어지는 예제입니다. https://stickode.tistory.com/612 먼저, 싱글톤 패턴인 GameManager를 생성하겠습니다. (싱글톤패턴에 관련해서는 다른 게시글에 자세하게 설명이 되어있습니다.) GameManager라는 스크립트를 생성합니다. GameManager라는 정확한 명칭으로 생성하면 많이 사용하는 명칭이라 유니티에서 아이콘 모양을 다르게 표시해줍니다. //GameManager.cs public class GameManager : MonoBehaviour { public static GameManager instance; private voi.. 2022. 11. 28.