Engine/Unity

    [실전 유니티 C#] if 문으로 조건을 만들다

    [실전 유니티 C#] if 문으로 조건을 만들다

    어떠한 특정 조건을 만족시키면, 이 코드를 실행시키고, 그렇지 않으면 다른 코드를 실행시킬 수 있도록 분기를 나눌 수 있습니다. 지난 시간에 배웠던 bool 형 변수를 이용하여 if 문에 대해서 배워 보겠습니다. 바로 코드부터 볼까요? using System; using System.Collections; using System.Collections.Generic; using UnityEngine; public class Player : MonoBehaviour { public int currentHP = 70; // 현재 체력 public const int maxHP = 100; // 체력 max public string name; // 이름 public string guildName; // 길드 명 ..

    [실전 유니티 C#] 문자열 다루기

    [실전 유니티 C#] 문자열 다루기

    지난 시간에 문자열은 문자들의 합쳐놓은 것이라고 배웠습니다. 문자는 char, 문자열은 string이라는 데이터 타입을 사용하는데요. string은 자주 쓰이는 데이터 타입이니 조금 익숙해질 필요가 있겠습니다. 첫번째 시간에 저희가 콘솔 창에 문자열을 출력해 보았습니다. 여기서 조금만 더 발전해 나가 볼까요? using System; using System.Collections; using System.Collections.Generic; using UnityEngine; public class Player : MonoBehaviour { public int currentHP = 70; // 현재 체력 public const int maxHP = 100; // 체력 max public string nam..

    [실전 유니티 C#] 상수란 무엇인가

    [실전 유니티 C#] 상수란 무엇인가

    상수는 영어로 constant로 const 라는 키워드로 변수를 설정할 수 있습니다. 실습을 위해 Player 라는 새로운 스크립트를 추가해 보겠습니다. 그러면 아래와 같은 스크립트가 자동으로 생성됩니다. 유니티에서 자동으로 작성해 주는 이것을 템플릿 코드라고도 합니다. using System.Collections; using System.Collections.Generic; using UnityEngine; public class Player : MonoBehaviour { // Start is called before the first frame update void Start() { } // Update is called once per frame void Update() { } } 우리는 Star..

    [실전 유니티 C#] 데이터 타입

    [실전 유니티 C#] 데이터 타입

    변수에는 여러 가지 형식(타입)이 있습니다. int float string bool 와 같이 주로 4 가지의 타입을 사용합니다. 순서대로 설명 드리자면 아래와 같습니다. integer의 줄임말로 정수형 floating point number의 줄임말로 부동소수점, 실수형 string은 두 개 이상의 문자를 모은 문자열 boolean의 줄임말로 true와 false (참과 거짓) 딱 두 가지의 값을 할당 가능 using System; using System.Collections; using System.Collections.Generic; using UnityEngine; public class NewBehaviourScript : MonoBehaviour { // Start is called before..

    [실전 유니티 C#] 들여쓰기

    [실전 유니티 C#] 들여쓰기

    지난 시간에 작성한 코드에서 스페이스 (공백)이 들어가 있는 것을 아래와 같이 확인할 수 있습니다. 들여쓰기는 디폴트로 스페이스(공백)이 4개 들어가 있습니다. 이는 에디터 또는 IDE 설정에 따라 달라질 수 있습니다. 들여쓰기는 Tab 키로 지정할 수 있고 굳이 스페이스 바를 여러번 입력할 필요가 없습니다. 그래서 한 탭 당 몇 개의 공백을 넣을 것인지 IDE에서 설정할 수 있는 것이구요. 저는 보통은 코드의 가독성을 위해 디폴트인 공백 4개를 탭 키로 사용합니다. 디폴트가 가장 무난하고 보기에도 좋더라구요. 컴파일러 입장에서는 탭키가 들어가든 스페이스 공백이 들어가든 아무런 의미가 없습니다. 컴파일러는 공백이 끝나는 시점에 어떤 문자가 있냐가 중요하지요. 예를 들어 9번 줄에서 void 라는 키워드가..

    [사이드 프로젝트] 유니티로 마인드맵 개발합니다

    [사이드 프로젝트] 유니티로 마인드맵 개발합니다

    마인드맵은 학습 효과가 높다는 것은 이미 널리 알려진 사실입니다. 사이드 프로젝트로 유니티 마인드맵을 개발 중입니다. https://github.com/ddayin/Unity-MindMap GitHub - ddayin/Unity-MindMap Contribute to ddayin/Unity-MindMap development by creating an account on GitHub. github.com

    [실전 유니티 C#] 변수 (variable)

    [실전 유니티 C#] 변수 (variable)

    이제 변수에 대해서 배울 시간입니다. 컴퓨터는 데이터 (data) 를 가공해서 사람에게 어떤 형태로든 보여주는 기계입니다. 변수는 이 데이터를 담는 공간을 의미합니다. 변수는 컴퓨터 메모리 (RAM)에 저장됩니다. 그리고 변수에 저장된 데이터는 바뀔 수도 있습니다. 우리가 지금까지 살펴본 코드에는 아직 변수가 보이지 않습니다. 아래와 같이 코드를 한 줄 추가해 보겠습니다. 11번 라인에 빨간색으로 표시된 곳에 변수를 선언하면서 초기화를 하였습니다. 이 때, 선언이란, 컴퓨터에게 앞으로 이런 변수를 사용할 거라고 알려주는 행위입니다. 초기화란, 말 그대로 변수에 값 (value) 을 채워 주는 것을 의미합니다. 그래서 11번 줄을 한국어로 번역해 보자면 이러합니다. "a 라는 이름을 가지고 있는 정수형 변..

    [실전 유니티 C#] 주석 (comment)

    [실전 유니티 C#] 주석 (comment)

    이제는 코드를 자세히 뜯어 볼 차례입니다. Visual Studio 2022 Community 버전이 설치되어 있어야 합니다. 만약 다른 에디터나 IDE를 쓰고 있다면, 따라 하는데 크게 어렵지 않을 것입니다. 다만, 무료이고 널리 쓰이는 툴을 쓰는 것일 뿐입니다. 아래 코드는 이전 게시글에서 작성한 스크립트입니다. 여기서 말하는 스크립트는 cs 파일을 의미합니다. 소스코드라고도 하지만, 그것 보다는 유니티 C# 스크립트라고 부르는 것이 좋겠습니다. 앞으로는 스크립트라는 용어로 통일 하도록 하겠습니다. 위 스크립트를 보면 초록색 텍스트가 보입니다. (에디터 또는 IDE 또는 설정한 옵션에 따라 색상은 다를 수 있습니다.) 슬래쉬 두 개 (//) 로 시작하면 그 라인은 주석이 됩니다. 주석이란, 스크립트를..

    [실전 유니티 C#] 유니티 콘솔창에 로그 출력

    [실전 유니티 C#] 유니티 콘솔창에 로그 출력

    강의에 앞서 유니티 버전을 맞추어야 합니다. 이미 유니티 허브를 설치하신 분들은 아래 LTS(Long Term Support) 버전을 추가로 설치하셔야 합니다. LTS 버전을 추가로 설치하는 방법을 이 문서를 참고해 주세요. 유니티 버전 : 2020.3.30f1 LTS 유니티 허브에서 Projects => New project 버튼을 클릭합니다. 그러면 아래와 같은 화면이 나옵니다. 새로운 프로젝트로 먼저 유니티 에디터의 버전을 선택합니다. (2020.3.30f1 LTS) 그 다음은 2D Core를 선택합니다. Project name을 여러분이 정하고 싶은 이름으로 정해봅니다. 저는 HeyUnity로 이름을 지어보겠습니다. 마지막으로 Create project 버튼을 클릭하면 모든 신규 프로젝트 생성이 ..

    [실전 유니티 C#] 서문

    유니티 엔진은 출시한지 17년이나 되는 역사가 오래된 엔진이 되었습니다. 2005년에 출시했으니까요. 유니티는 게임 업계뿐만 아니라, 다양한 산업에서 활용되는 엔진입니다. 태생은 게임 엔진이었지만, 요즘 트렌드인 메타버스에서도 유니티 엔진이 쓰이고 있습니다. 저는 Flash, DirectX, OGRE, cocos2d-x 등 다양한 게임 엔진을 사용해 보았는데, 유니티만한 엔진이 없었습니다. 유니티 공식 홈페이지나 여러 유니티 서적들에서도 말하지만, 유니티의 좋은 점을 몇 가지 나열해 보겠습니다. 입문 하기에 쉽습니다. 그러나 마스터 하기에는 어렵습니다. (이게 좋은 점인가?) 다양한 컨텐츠를 제작할 수 있는 개발 자유도가 높습니다. 멀티 플랫폼을 지원해서 비교적 쉽게 포팅이 가능합니다. 프로그래머의 영역..

    [실전 유니티 C#] 목차

    대상 : 유니티와 C#이 처음인 입문자를 대상으로 합니다. 목차 서문 유니티와 C# 소개 유니티 C# 유니티 콘솔창에 로그 출력 C# 문법 주석 변수 들여쓰기 데이터 타입 상수란 무엇인가 문자열 다루기 if 문으로 조건을 만들다 if 와 else if 와 else switch case 문 열거체 enum 유니티 에셋스토어 스프라이트 배치 함수 클래스 컴포넌트 기반 프로그래밍 GameObject MonoBehaviour 유니티 Inspector 실전 게임 개발 I - 총알 피하기 게임 실전 게임 개발 II - 타자 연습 게임 네트워크 프로그래밍

    [TIL] Transform.SetParent( Transform parent, bool worldPositionStays )

    파라미터로 bool 형의 worldPositionStays 가 있는데, 이것을 true로 해야 월드 좌표계의 위치, 회전, 스케일이 이전과 같이(SetParent 하기 이전) 유지가 됩니다. using UnityEngine; public class ExampleClass : MonoBehaviour { public GameObject child; public Transform parent; //Invoked when a button is clicked. public void Example(Transform newParent) { // Sets "newParent" as the new parent of the child GameObject. child.transform.SetParent(newParent)..

    [Unity TIL] transform.Find("Child/ChildOfChild") 성능

    transform.Find()는 성능에 큰 영향을 주지 않습니다. 유니티 공식 스크립트 레퍼런스 문서에 따르면, 아래와 같이 설명합니다. Note: Find does not perform a recursive descend down a Transform hierarchy. 사용 방법은 파라미터에 Hierarchy 상의 경로를 지정하고 슬래시로 구분합니다. 출처 - https://docs.unity3d.com/2021.1/Documentation/ScriptReference/Transform.Find.html Unity - Scripting API: Transform.Find If no child with name n can be found, null is returned. If n contains a '..

    [TIL] MonoBehaviour.StopCoroutine() 주의사항 한 가지

    당연한 것일 수도 있겠지만 비활성화된 (Disabled) 게임 오브젝트에는 StopCoroutine()이 안 먹힙니다. 만약 코루틴을 시작하거나 정지할 때 해당 게임오브젝트가 비활성화 되어 있다면 에러가 발생합니다. using UnityEngine; using System.Collections; public class Example : MonoBehaviour { // keep a copy of the executing script private IEnumerator coroutine; // Use this for initialization void Start() { print("Starting " + Time.time); coroutine = WaitAndPrint(3.0f); StartCoroutin..

    Component.GetComponentsInChildren(Type t, bool includeInactive)

    GetComponentsInChildren() 할 때 파라미터로 includeInactive를 true로 설정하면 비활성화된 children 배열을 가져올 수 있다. 비활성화 된 게임오브젝트의 컴포넌트를 가져오는 방법은 이 방법 밖에 없는 것으로 보인다. - 출처 : Unity - Scripting API: Component.GetComponentsInChildren (unity3d.com) Unity - Scripting API: Component.GetComponentsInChildren Success! Thank you for helping us improve the quality of Unity Documentation. Although we cannot accept all submissions,..

    [듀오링고 클론 코딩 with Unity] 유니티 스크립트 파일과 메타 파일

    [듀오링고 클론 코딩 with Unity] 유니티 스크립트 파일과 메타 파일

    유니티는 기본적으로 모든 파일을 에셋으로 봅니다. cs 확장자 명을 가지는 스크립트도 마찬가지인데요. 특이한 점은 이 에셋 파일마다 메타 파일(meta file)이 하나씩 존재한다는 점입니다. 메타 파일을 한 번 열어볼까요? 메타 파일에는 파일명 끝에 무조건 .meta 라는 확장자 명을 가집니다. 아래 화면은 GameManager.cs 의 메타파일을 Visual Studio Code로 열어본 것입니다. 그 중에 눈여겨 볼 지점은 guid 입니다. guid 란, Global Unique Identifier의 약자로 고유의 id 라고 봐도 무방합니다. 유니티 내에 있는 에셋들이 무수히 많기 때문에 이렇게 긴 guid를 가지고 있어야 겠습니다. 유니티 인스펙터 상으로 에셋 파일의 속성 / 옵션 값을 변경하면 ..