본문 바로가기

분류 전체보기

C#_002_C Sharp 언어의 특징과 기본 구조 C# 언어의 특징 1. Object-Oriented Programming 언어 C#의 가장 핵심적인 특징은 Object-Oriented Programming(OOP : 개체 지향 프로그래밍) 언어이다. OOP의 대표적인 언어는 Java, Python, C++, Ruby, C# 등이 있다. 이 개념은 Java에서 파생한 Kotlin(코틀린) 언어에서 알아보았기 때문에 생략한다.(코틀린 더파기_13) 참고로 Object(오브젝트)는 이전에 '객체'라고 해석했는데 '개체'라고 해야 한다는 주장이 있다. 나는 그 주장이 더 설득력있게 들려서 지금부터는 Object를 개체라고 부르기로 했다. 2. Method 기반 Method(메서드; 방법)는 Function(펑션; 기능, 함수)와 같은 의미이다. OOP에서는 .. 더보기
C#_001_비주얼스튜디오 준비하기 Visual Studio(VS ; 비주얼스튜디오)는 IDE(통합 개발 환경)이다. 비주얼스튜디오는 컴퓨터, 클라우드, 웹, 모바일, 데이터베이스, AI, Cross-Platform(크로스플랱폼)에 대해 프로그래밍할 수 있는 모든 환경이 준비되어 있다. 비주얼 스튜디오는 여러 버전으로 공급되고 있다. VS Community : 일반인용(무료) VS Professional : 전문가용 VS Enterprise : 회사용 VS Code : 코드 편집기 VS for Mac : 맥 컴퓨터용 여기서는 VS Community를 설치하여 사용한다. 비주얼 스튜디오 2022 새 버전이 나왔다. 설치하려면 [ 비주얼 스튜디오 2022 설치 ] 링크 글을 참고한다. 아래는 비주얼 스튜디오 2019 설치 순서이다. 설치 방법.. 더보기
C#_000_씨샾이 뭐지? 유니티로 게임 만들어 볼려고 이렇게 저렇게 한 지 벌써 1년이 다 되어 간다. 유튜브, 책 등을 전전하며 꽤 많은 게임을 따라 만들어 보았다. 유니티는 정말 내 수준에서 게임 만들기에 최적의 환경을 제공하는 프로그램인 것 같다. C# 언어로 코딩하는 문제도 이미 파이썬이나 코틀린 같은 프로그래밍 언어를 간단하게나마 훑어보아서 인지 지금까지는 특별히 막히는 부분 없이 올 수 있었다. 딱 여기까지다. 기존 게임 따라 만들기를 넘어 진전이 없다. 내가 구상하는 게임을 만들려고 하니 코드가 제대로 만들어지지 않는다. 설령 어떻게 해서 실행은 되었지만 한 눈에 봐도 전체 코드는 체계가 잡히지 않은 뒤죽박죽이라는 걸 알 수 있다. 어떻게 학습하는 것이 가장 효율적이고 체계적일까 고민을 많이 했다. 이 시점에 프로그.. 더보기
유니티 각개격파_020_SetActive와 Destroy 메서드 GameObject(게임오브젝트) 유니티에서 게임오브젝트는 Scene(씬) 화면에 만들 수 있는 가장 기본이 되고, 바탕이 되는 Object(객체, 개체)이며 독립체이다. Hierarchy(하이어라키; 계층구조)창에서 +버튼을 클릭하면 게임오브젝트를 만들 수 있다. 또는 빈 곳에서 마우스 오른쪽 버튼을 클릭해도 된다. GameObject라는 기본(Default , 디폴트) 이름을 가진다. 마우스로 한번 클릭해서 이름을 바꿀 수 있다. Inspector(인스펙터, 조사관, 검사관) 창에는 디폴트로 Transform 이라는 Component(컴퍼넌트, 구성요소, 부품) 하나만 가지고 있다. Position(위치)의 각 축 값은 임의로 정해진다. 오른쪽 삼점 아이콘을 클릭한 후 Reset(리셋) 하면 위치를 .. 더보기
유니티 각개격파_019_스크린 좌표를 월드 좌표로 변환하기 이전 글에서 스크린 좌표계에서 사용하는 위치와 월드 좌표에서 사용하는 위치는 다르다고 했다. 그래서 월드 좌표에 있는 게임오브젝트와 스크린 좌표계를 사용하는 마우스 포인트의 위치는 서로 상호작용할 수 없다. 여기서는 마우스 포인트 위치를 월드 좌표로 변환하는 코드를 알아본다. 먼저 2D 환경 부터 테스트 해보자. 유니티 허브를 실행한 후 3D 모드의 프로젝트를 하나 만든다. 처음에는 2D 환경으로 테스트 하기 때문에 글을 참고해서 2D환경으로 수정한다. 귀찮으면 그냥 2D 타입으로 프로젝트를 만들고, 3D 타입으로 테스트 할 때는 다시 하나 더 만들어도 상관없다. 여기서는 3D환경을 2D 환경으로 수정하여 테스트 한다. Layout을 2by3으로 바꾼다. Hierarchy창에 Sphere를 하나 만든다... 더보기
유니티 각개격파_018_3D 환경에서 2D로 변경하기 프로젝트를 만들 때 2D 또는 3D를 선택할 수 있다. 여기서는 3D와 2D 환경의 차이를 알아보기 위해 3D 프로젝트를 2D 프로젝트로 변경해 본다. 3D 프로젝트를 하나 만든다. 기본 화면은 위와 같다. 3D 환경은 특징은 다음과 같다. 1. Light(빛) 오브젝트가 기본으로 설정된다. 2. Gizmos(기즈모)라는 좌표 도구가 있다. 3. Scene(씬) 화면이 원근감 있게 보인다. 위 화면은 2D 프로젝트의 첫화면이다. Light오브젝트가 없고 Gizmos 도구가 없다. Scene화면은 원근감 없이 일정하게 보인다. 이제 3D 화면을 2D 화면으로 바꿔보자. 씬 화면에 2D 보기와 3D보기로 바꿔주는 버튼이 있다. 클릭하면 오른쪽에 있던 Gizmos(기즈모) 가 사라지고 격자 모양도 원근감이 없.. 더보기
유니티 각개격파_017_Texture Compression_텍스처 압축 게임에 사용할 sprite(스프라이트; 이미지)를 사용하려고 할 때 이미지를 선택하면 Inspector창에 아래와 같은 메시지가 뜨는 경우가 있다. 1. Only POT texture can be compressed if mip-maps are enabled 밉맵이 활성화 된 경우 POT 텍스처만 압축 할 수 있습니다. 2. Only textures with width/height being multiple of 4 can be compressed to ETC1 format 너비 / 높이가 4의 배수인 텍스처 만 ETC1 (또는 ETC2) 형식으로 압축 할 수 있습니다. 3. Only POT textures can be compressed to ETC1 format POT 텍스처만 ETC1 형식으로 압축.. 더보기
유니티와 C# 개념 정리_002_MonoBehaviour, Awake, Start , Update, LateUpdate 앞 글에서 게임오브젝트에 기능을 부여하려면 Component(컴퍼넌트)를 연결한다고 했다. C# 으로 작성한 스크립트 파일도 컴퍼넌트로 붙일 수 있다. 게임 오브젝트에 컴퍼넌트로 붙이기 위해 스크립트 파일을 만든 후 더블클릭 등으로 파일을 열면 아래와 같이 등록된 편집기로 편집할 수 있는 상태가 되고 유니티에서 제공하는 기본 코드가 나타난다. 5번 줄에 클래스명(PlayerController)이 있고 그 뒤에 : MonoBehaviour 이 붙어있다. 콜론 ( : ) 기호는 상속받는다는 뜻이고 상속하는 주체는 MonoBehaviour이라는 유니티의 Base Class(기본 클래스)이다 라는 뜻이다. 즉, MonoBehaviour은 유니티에서 스크립트 사용을 위해 C#으로 만들어 놓은 클래스 이름이며 Pl.. 더보기