반응형 게임 개발/C#30 C# 코드 생략 기법 - 메서드 체이닝(Method Chaining) 메서드 체이닝이란 한 객체를 대상으로 실행되는 여러 메서드 코드에서첫 줄에만 객체를 적고 아래로는 코드를 생략하여 같은 객체에서 실행만 달리할 수 있는 기법이다.설명만 들으면 이해가 안 갈 것 같다. 코드로 설명하겠다.class Program{ static void Main(string[] args) { Builder builder = new Builder(); string result = builder.Append("Hello, ") .Append("World!") .Build(); Console.WriteLine(result); // 출력: Hel.. 게임 개발/C# 2024. 12. 11. C# Generic의 기능, 사용법, 예시 이번에는 말로만 듣던 C#의 제네릭에 관해서 이야기해볼까 한다.우선 제네릭은 타입과 상관없이 여러 상황에 같은 클래스, 메서드를 적용시키기 위한 편리한 방법 중 하나이다.예시를 보는 것이 이해에 도움이 될 것이다.1. 제네릭 클래스using System;public class GenericList{ private T[] items; private int count; public GenericList(int size) { items = new T[size]; count = 0; } public void Add(T item) { if (count = 0 && index 인스턴스 생성 GenericList intList .. 게임 개발/C# 2024. 11. 25. C# Interface의 기능, 사용법 오랜만에 순수 C#의 기능 중 하나인 Interface에 대해서 설명해 보겠다.Interface의 거시적인 의미를 설명하자면 여러 클래스에서 같은 메서드를공유하고 싶을 때, 이를 효율적으로 관리할 수 있게 해주는 기능을 가진다.이런 건 설명만으로 이해하기 불가능하다. 의미만 알고 예시를 보자.public interface IVehicle{ void Start(); void Stop();}public class Car : IVehicle{ public void Start() { Console.WriteLine("Car started."); } public void Stop() { Console.WriteLine("Car stopped."); .. 게임 개발/C# 2024. 11. 24. C# 에서 문자열을 반복하는 가장 간단한 방법 - new string 별 찍기 같은 문제에서, 띄어쓰기나 별을 여러 번 사용해야 하는 경우가 나온다.만약에 파이썬에서 * 하나를 가지고 ***을 만들어야 한다면 어떻게 표현할까? star = "*"print(star*3) 뭐 아마도 이런 식으로 3번 복사를 하지 않을까 싶다.하지만 안타깝게도, C#에서는 문자열에 곱연산을 지원하지 않는다.그럼 뭐... 반복문이라도 써야 하는 것일까? string star = "*";string star3 = "";for(int i = 0; i 이렇게라도 표현해야 할까..?다행히도, C#에는 문자를 반복하기 위한 기능인 new string이 있다.일반적으로 new를 통해서 새로운 string 객체를 생성하는 것이지만뒤쪽에 파라미터가 하나 더 입력될 수 있게 되어 있는데, 이게 반복을 의미한다.. 게임 개발/C# 2024. 11. 3. 이스케이프(escape) - 특수문자를 문자열로 바꾸는 법, 출력하는 법. 나를 포함한 많은 사람들이 아는 내용일 것 같다만, 용어의 이름은 몰랐기도 하고항상 오류가 나는 부분만 이스케이프 했기에 IDE가 없어지면 못 고칠 것 같아서좀 더 자세히 알아보고자 기록용으로 글을 남긴다.1. 정의가장 먼저 이스케이프의 정의는 특수 문자를 문자열로 표현하기 위해서 하는 기법이다.만약에 "라는 문자를 출력하고 싶다고 가정하자.Console.WriteLine(""");만약 이스케이프를 모르는 사람이라면 저렇게 쓸 것이다.저 코드는 보기에도 안 좋지만 사실 작동조차 되지 않는다. "라는 문자는 문자열을 표현하기 위한기능이 있는 특별한 특수 문자라서 그냥 저렇게 쓰면 컴퓨터는 사용자의 의도를 정확히 파악할 수 없다.실행하면 위와 같은 경고가 뜨며 빌드가 불가능하다고 말한다.실제로 문제가 있는 .. 게임 개발/C# 2024. 8. 1. C#에서 ?와 ??의 의미, null을 판단하는 방법(null 조건부 연산자, null 병합 연산자) 오늘은 C#에서 null을 판단하는 방법에 대해서 알아보도록 하겠다.많은 용도로, 많은 곳에서 편하게 쓸 수 있는 효과적인 연산자이다.? 는 null 조건부 연산자라고 불리고,?? 는 null 병합 연산자라고 불린다. 둘 다 null인 경우에 예외 처리를 하기 위해서 존재하는 연산자이다.? 에 대해서 먼저 알아보고,?? 에 대해서 알아보면서 글을 마치겠다.1.? : null 조건부연산자먼저 정의는 객체가 null인지 판단하여 null이라면 실행 자체가 되지 않는다.흔히 일어나는 오류인 NullReferenceException을 방지할 수 있게 되며, 예외 처리에 용이하다.코드로 설명하면 더욱 직관적으로 알 수 있을 것이다.using System;namespace unicoti { class Prog.. 게임 개발/C# 2024. 7. 30. C# - Possible null reference argument for parameter 's' in 'int int.Parse(string s)'. 오류 해결법 (CS8600, CS8604 VSCODE를 비롯한 여러 IDE에서 C# 코딩을 하다 보면 이러한 오류가 뜰 수 있다.사실 오류보다는 경고에 가까운데, 경고가 있는걸 보기 싫어하는 개발자에게 도움이 될까 하여 올린다.1. 에러의 내용사실 별 내용 없지만 그래도 글의 구조를 지키기 위해서 제목을 나눠두겠다.이 에러를 해석해 보면 "int.Parse(string s) 메서드의 매개변수 's'에 null 참조가 전달될 수 있습니다."정도로 해석해 줄 수 있다. int.Parse의 매개변수에 null값이 들어갈 수 있다는 이야기이다. 다르게 말하면 null값이 들어가면 안 되기에 조심하라는 말이다. 만약 들어가면 오류가 되기에저렇게 null이 들어갈 수 있다고 경고하는 것이다. 당연히 예외처리를 해서null값을 없애면 오류가 해결된다.nam.. 게임 개발/C# 2024. 7. 29. dynamic programming(dp)와 메모이제이션(memoization) - C# 오랜만에 유니티가 아닌 C# 글을 남긴다. 요즘 순수 C# 공부를 시작해서 얻게 되는 게은근히 많은 것 같다. 한 문제 한 문제 풀 때마다 얻는 게 생겨 신기하다.아무튼, 이 글에서는 동적 프로그래밍과 메모이제이션에 대해서 설명하겠다.1. 동적 계획법 - dynamic programming(dp)우선 동적 계획법 자체의 정의는 한 문제를 더 작은 두 문제로 나누어 해결하는 기법이다.이때 "분할 정복"이라는 개념의 정의와 매우 유사해지는데, 동적 계획법은 중복이 존재하는경우에 사용하는 기법이다. 중복이 존재한다고 하면 조금 애매해 보일 수도 있는데,작은 부분의 값이 항상 같은 경우라고 정의하고 싶다.분할 정복은 작은 여러 개의 부분으로 나눴을 때 중복이 없는 경우이다. 동적 계획법을 구글에다가 검색해 보면.. 게임 개발/C# 2024. 7. 10. 유니티 C# override, virtual 유니티 공부를 조금 해본 사람이라면, 서적이나 다른 사람이 만든 코드에서 이러한 새로운 개념을 보았을 것이다. 이 개념들은 생각보다 쉽다. 간단히 말하자면, override는 이 함수를 고치겠다.이고, virtual은 이 함수를 고쳐도 된다는 허락이다. 표기\의미 뜻 Override 함수를 고치는 걸 통보 Virtual 함수를 고치는걸 허락 유니티는 클래스 개념이 존재하는 만큼, 상속 등 함수를 공유할 수 있는 경우가 많은데, 그럴 때 쓰는 함수들이다. 예제를 보여주자면 public virtual void OnPointerUp(PointerEventData eventData) { input = Vector2.zero; handle.anchoredPosition = Vector2.zero; } //이 클래.. 게임 개발/C# 2022. 11. 21. C# override C#의 override에 대해 알아보겠다. override의 기능은 원래 있던 함수를 확장하거나 , 바꾸는 것이다. 클래스 개념을 아는 사람이라면 스크립트를 쓸때 클래스를 부모로 설정할수 있다는걸 알텐데, public class Monster : Monobehaviour { public void debug() { Debug.Log("monster"); } } 라는 몬스터 클래스가 있다고 하자, 그럼 드래곤 스크립트를 짤때 public class Dragon : Monster { public void debug() { Debug.Log("monster"); Debug.Log("추가"); } } 이렇게 debug 함수에 기능을 추가하고 싶다면 이때 override를 쓴다. public class Monste.. 게임 개발/C# 2022. 8. 19. C# enum enum 은 열거형이라고 불리며, public enum Name { John, Jake, nicole } 이런식으로 선언해줄 수 있다. 아무런 값도 할당하지 않으면 첫번째 값에는 0, 두번째는 1, 세번째는 2, 등으로 1씩 늘어나며 자동설정된다. 다른 기능을 만들때 가져오고싶을때는 Name.John 과같이 .을 붙이고 이름으로 가져올 수 있다. 애니메이션을 만들때 public enum State { Walk, Idle, Run } 이렇게도 많이 쓰인다. 도움이 되었길 바라며, 끝. 게임 개발/C# 2022. 8. 17. 유니티) C# 기초 자료형 정리 오늘은 기초로 돌아가서 자료형들을 정리해보겠다. + 원리 일단 제일 많이 쓰이는것부터 인간 친화적으로 소개해보겠다. float : 소수, 정수 모두 포함하는 수(소수점자리 7개 까지) int : 정수. string : 문자열 bool : 참과 거짓(if문을 만들때 필요) 이게 제일 주로 쓰인다. 이것만 알아도 게임을 만드는데에는 딱히 지장이 없다. 타입을 바꾸는 것도 궁금할것 같은데, 일단 왠만한건 int num = (int)5.5f; 처럼 괄호를 이용해서 바꿀수 있는데, 안되는것들도 많으니 하나하나 소개하자면 float.parse(문자열); int.parse(문자열); 등등 parse가 기본적으로 쓰인다. 왜 안에 문자열이 들어가나면 무슨 자료형이던지 문자열로 바꿀수 있기 때문이다 .ToString().. 게임 개발/C# 2022. 8. 16. 이전 1 2 3 다음 💲 추천 글 반응형