오늘은 보다 간단한 주제를 가져와 보았다. 리스트(List)와 딕셔너리(Dictionary)는 C를 다루어본 사람이라면 모를 수 없는 개념일 것이다. C#에서는 이 두 가지의 자료구조가 제네릭 클래스이기 때문에, 게임오브젝트나 다른 객체 클래스를 포함한 어떠한 자료형이나 객체이든 사용할 수 있다. 리스트는 아래 코드와 같이 초기화할 수 있다. List numbers = new List { 1, 2, 3, 4, 5, 6 }; numbers.RemoveAll(x => x > 3); // 3보다 큰 모든 숫자 제거 numbers.Clear(); // 리스트의 모든 요소 제거 리스트란 주로 자료구조에서 연결 리스트와 같이 자주 등장하는 용어로, C#에서 동적 배열을 제공하며 일반적인 목록을 구현한다. 리스트는 ..
아마 OOP 객체 지향 프로그래밍 지식의 마지막 단계가 아닐까 싶다. 제네릭(Generic) 용법에 대해서 알아보자. 그 전에, 간단한 자료구조 몇 가지를 익혀야 할 필요성이 있다. 오늘 알아볼 자료구조는 스택, 큐라는 자료구조를 알아볼 것이다. 자료구조의 간단한 정리는 아래에 있다. 스택은 데이터로 탑을 쌓고, 데이터를 꼭대기에서부터 꺼내는 방식이라고 보면 되고, 큐는 원형 도넛같은 공간에 데이터를 넣고, 먼저 들어간 데이터부터 꺼내는 자료구조 방식이라고 생각하면 아마도 편할 수도 있다. 아래에는 간단히 스택 자료구조를 구현한 C# 스크립트이다. 스택 자료구조에서는 데이터 입력을 Push, 데이터 출력을 Pop이라고 대중적으로 사용한다. 대중적으로 사용하기 때문에 필수적이지는 않다. using Syst..
오늘 알아볼 지식은 상속에 대한 내용이다. C#에서는 클래스가 다른 클래스의 자식이 되어 부모 클래스의 변수나 메소드를 사용할 수 있는 유용한 기능이 존재한다. 같은 성질을 갖거나 목적을 갖는 클래스를 묶기에 유용한 기능으로, 아래의 내용이 상속에 대한 내용이다. 대중적으로 프로그래머들이나 툴을 개발한 개발자들은 코드가 중복되는 것을 매우 싫어하고, 유지/보수가 용이한 코드를 선호한다. 이 상속을 이용하면, 중복을 방지할 수 있고 더불어 유지/보수까지 유용하게 개발할 수 있다. 여기서 override라는 내용이 나오는데, 부모 클래스에게서 상속받은 메소드를 수정하거나 보다 기능을 더 확장시킬 수도 있는 확장성까지 지닌 모습을 알 수 있다. 먼저, 간단히 상속을 사용하지 않고 간단히 작성한 코드를 보자.u..

강의를 들으며 첫 과제인 것 같다. 간단히 UI와 스크립트를 구성하여 가위바위보 게임을 만드는 과제이다. 시작 화면에서 게임의 횟수를 입력하고 start 버튼을 누르면, 게임 화면으로 넘어와 양쪽에서 가위바위보 이미지가 번갈아 바뀌고, 판정 버튼을 누르면 이미지가 랜덤하게 바뀐 후 승패를 판정한다. 이후 정해진 라운드가 끝나면 양 유저의 승리 카운트를 합산하여 마지막 화면에서 승리 유저를 알려준다. 매우 간단한 게임은 아니지만, 지금 내 수준으로는 가능한 게임인 것 같았다. 일단 게임 화면 작업을 우선으로 해주었다. 간단한 UI와 2D라는 특성을 생각해보니, Panel UI가 떠올랐다. 기본적으로 텍스트를 입력하기 위한 Text Object, 게임 횟수를 입력하기 위한 IndexField Object, ..
C#을 공부해본 사람이라면 아마 생성자라는 단어를 들어본 적이 있을 것이다. 생성자란, 객체를 생성할 시에 객체의 속성들을 간단히 초기화할 수 있게 하는 목적을 가지고 있다. 따로 반환형은 표시하지 않고, 클래스의 이름과 같게 선언되기 때문에 객체를 선언할 때 함께 호출된다. 따라서 인위적으로 호출을 할 수 없다. 또한, 오버로딩이라 하는 기능을 허용하는 특징을 가지고 있다. 사용 방법은 아래와 같다. # 생성자 사용을 하지 않고 객체를 초기화 할 경우 클래스명 object = new 클래스명() object.초기화메소드(초기화 인수 ...); # 생성자 사용해 객체를 초기화 할 경우 클래스명 object = new 클래스명(초기화 인수 ...); 사용법이 많이 어렵지 않다. 실제 개발에서 예를 들어 사..
우리는 보통 C언어를 학습하게 되고, 이후 심화적으로 특정 툴을 사용하기 위해 C#이나 C++ 언어를 배우기도 한다. C언어에서 자주 쓰던 함수라는 개념이 C#에서는 메소드 개념으로 바뀌었다. C#은 JAVA라는 획기적인 언어를 대적하기 위해 등장하였던 언어이기 때문에, C의 기반보단 JAVA의 기반을 더 많이 따라간 모습을 볼 수 있다. 메소드란, 클래스의 멤버 데이터를 기반으로 동작, 연산, 제어 등의 실질적인 코드를 동작시키고 구성하기 위한 문법이라는 정의를 가지고 있다. C언어에서 함수를 다루었을 때와 마찬가지로, C#에서 메소드를 다룰 때도 여러 경우의 수와 고민을 하여야 한다. 이 메소드를 이용하여 구현하려는 기능이 어떤 클래스의 데이터를 기반으로 하는지, Caller와 Receiver를 어디..
우리는 보통 프로그래밍을 할 때, 배열을 일정 크기만큼 생성하면 곧이 곧대로 그 배열의 크기만큼 메모리도 사용하는 줄 알게 된다. 예를 들면, using System.Collections; using System.Collections.Generic; using UnityEngine; public class ArrayComponent : MonoBehaviour { void Start() { int[] values = new int[5]; } } 이렇게 작성하게 되면 int의 크기인 4Bytes가 5개 생성이 되는 줄 아는 것은 어찌 보면 당연하다. 하지만 이는 약간의 오류가 있다. 배열이라고 한다면, 배열은 그대로 크기만큼 메모리를 차지하는 것이 아니라, values라는 값은 참조 변수까지 생성하게 된다..
- Total
- Today
- Yesterday
- unity
- C#
- 메타버스
- 상속
- 침해사고분석및대응
- 부모클래스
- 디폴트매개변수
- 정보보호전문가
- sbs아카데미게임학원
- SpaceShooter
- 유니티
- 핸디커뮤니케이션즈
- 물데네전세표응
- OOP
- 정보보안
- 자식클래스
- 보안
- 업캐스팅
- 가위바위보게임
- 코루틴
- 유니티개발
- 익숙한출발
- virtual
- Abstract
- 정보보호
- apstndp
- base
- override
- 게임개발
- 게임리뷰
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |