아마 OOP 객체 지향 프로그래밍 지식의 마지막 단계가 아닐까 싶다. 제네릭(Generic) 용법에 대해서 알아보자. 그 전에, 간단한 자료구조 몇 가지를 익혀야 할 필요성이 있다. 오늘 알아볼 자료구조는 스택, 큐라는 자료구조를 알아볼 것이다. 자료구조의 간단한 정리는 아래에 있다. 스택은 데이터로 탑을 쌓고, 데이터를 꼭대기에서부터 꺼내는 방식이라고 보면 되고, 큐는 원형 도넛같은 공간에 데이터를 넣고, 먼저 들어간 데이터부터 꺼내는 자료구조 방식이라고 생각하면 아마도 편할 수도 있다. 아래에는 간단히 스택 자료구조를 구현한 C# 스크립트이다. 스택 자료구조에서는 데이터 입력을 Push, 데이터 출력을 Pop이라고 대중적으로 사용한다. 대중적으로 사용하기 때문에 필수적이지는 않다. using Syst..
전 글에서 추가하여, 업 캐스팅을 이용하여 아래와 같이 펫 버프 및 펫 healing 기능을 구현하였다. using JetBrains.Annotations; using System.Collections; using System.Collections.Generic; using UnityEditor; using UnityEngine; using UnityEngine.TextCore.Text; using UnityEngine.Timeline; public abstract class CharacterEx // 부모 클래스 { // * protected : 자식 클래스에서 부모 클래스의 멤버변수(속성) 및 메소드를 접근 허용하고 싶을 때 사용하는 접근 지정자 // 이름 protected string name; /..
저번 포스팅 때 설명을 못한 상속에서의 유용한 기능이 한 가지 더 존재한다. 먼저 가상적인 상황을 부여해보면, 힐러가 객체를 부여받아 힐을 해주는 기능을 구현했다고 가정하여 보자. 아래가 해당 스크립트이다. using System.Collections; using System.Collections.Generic; using UnityEditor; using UnityEngine; // 상속 문법을 사용한 캐릭터 클래스들 // 부모 클래스를 이용한 상속 코드 구현 순서 (일단 중복 해결에 대한 기준으로만) // 1. 중복되는 멤버 변수와 메소드를 공통(부모 클래스)으로 이동시킴 // 2. 중복된 내용 제거된(부모 클래스로 옮겨진) 자식 클래스에서 부모 클래스를 상속받는 형식의 명세로 변경 // -> pub..
오늘은 상속을 더욱 응용시켜 기능을 만들어보도록 하자. 상속의 특징 중에서 먼저 override를 살펴보자. 저번 상속을 설명하며 작성했던 코드에서 변경사항이 생겼다. 법사가 새로 공중부양을 하여 이동하는 기능이 생겼고, 이로 인해 코드를 변경해야 한다. 하지만 다른 직업은 걸어다니는 이동을 수행해야 하기 때문에 CharacterEx 클래스의 Move() 메소드를 변경하면 모든 직업들이 공중부양을 하게 되므로 MagicianEx 클래스 내에서 변경해야 한다. 이 때 자식 클래스에서 부모 클래스의 Move() 메소드를 변경할 수 있는 기능이 있다. 바로 override 기능이다. 자식 클래스에서 부모 클래스의 메소드를 확장 정의 / 수정 정의 / 재정의할 수 있는 기능으로, 보통 부모 클래스의 메소드에 필..
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라는 값은 참조 변수까지 생성하게 된다..

처음으로 블로그에 글을 작성하다 보니 뭐부터 작성해야 할지 모르겠다.. 우선 본인은 평범하게 컴퓨터 공학 관련 전공인 정보보호학과를 수료하였고, 현재는 그냥 졸업을 앞둔 평범한 취업준비생이다. 원래 블로그에 대해서는 회의적인 생각이었으나, 졸업을 앞두고 취업을 준비하면서 생각이 많아지게 되었고 주변에서 획득한 정보들을 정리할 수단을 생각하다가 블로그를 해보게 되었다. 본인이 중학교 때, 소지섭 배우 주연의 '유령'이라는 드라마를 보게 되었다. 그 때 까지는 컴퓨터를 오로지 인터넷 강의, 정보 탐색, 게임과 같은 용도로 사용하던 본인에게 해킹과 방어, 보안은 신세계로 다가오게 되었고 자연스럽게 화이트 해커의 꿈을 키우게 되었다. 그렇게 꿈을 갖고 2018년 정보보호학과에 진학한 본인은, 예상했던 벽에 부딪..
- Total
- Today
- Yesterday
- 침해사고분석및대응
- unity
- SpaceShooter
- 보안
- C#
- 정보보안
- 정보보호전문가
- 유니티
- Abstract
- 업캐스팅
- override
- 익숙한출발
- 메타버스
- 코루틴
- 가위바위보게임
- 핸디커뮤니케이션즈
- 게임리뷰
- 유니티개발
- 정보보호
- sbs아카데미게임학원
- 물데네전세표응
- apstndp
- OOP
- 디폴트매개변수
- 자식클래스
- virtual
- 부모클래스
- base
- 상속
- 게임개발
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |