Programming/C# & Unity

Programming/C# & Unity

C# Tuple, ValueTuple

1. Tuple private Tuple CompleteQuest(Int32 iID_) { return Tuple.Create(EErrorCode.INVALID_ID, null, null); } public void Main() { var tuResult = CompleteQuest(5); if(tuResult.Item1 != EErrorCode.OK) { Logging($"Error : {tuResult.Item1}."); return; } UpdateQuest(tuResult.Item2); ReceiveReward(tuResult.Item3); } Tuple은 C++의 그것과 동일하다. 여러 가지를 한 번에 전달해야 하는데 구조체 같은 것으로 감쌀 만큼 재사용성이나 스펙이 크지 않을 때 사용한다. 2..

Programming/C# & Unity

C# 게임 서버 (.net core) 장단점

C# 콘솔 서버를 실무에서 사용해보면서 느껴진 신입의 입장에서 주관적인 장점과 단점을 정리해보았다. 장점 1. 메모리 관리 수월 : C++은 잘못된 메모리를 접근하고 쓰는 순간 망한다. 심지어 스마트 포인터를 사용하거나 new-delete 관리를 잘해줘도 파편화 때문에 터져버린다. 하지만 C#의 GC는 단순 소멸 생성 외에도 파편화, 순환 참조 까지 다 해결해줘서 코드를 쉽게 깔끔하고 문제없이 동작하도록 짤 수 있다. 2. 유니티 프로젝트와 찰떡 : 클라이언트에서 사용하는 기획 데이터 코드나 패킷 구조체등을 그냥 그대로 가져다 쓸 수가 있다. 똑같은 일을 두 번 하는 뻘짓을 줄여주는 것 외에도, 클라-서버 간에 공통 작업이 누락되어 생기는 문제 같은 것들을 원천 차단할 수 있어서 편리하다. 3. 치명적 ..

Programming/C# & Unity

C# try catch finally

나는(일반적으로) 전체적으로 크게 감싸서 Exception을 잡을 때는 try-catch-finally를 쓰고, 해제와 같은 일을 할때는 try-finally를 쓴다. 1. try-catch-finally try { throw new NullReferenceException(); } catch ( Exception e ) { Console.WriteLine( $"It's Main's catch. :: {e.Message}" ); } finally { Console.WriteLine( "It's Main's finally." ); } 이건 제일 기본형. 패킷 단위에서 Exception을 막을 때 유용하게 씀. 2. try-finally static public void DoException() { try ..

Programming/C# & Unity

C# 자주 쓰는 Collection 집계 함수

자주 쓰는 컬렉션 집계함수들을 모아서 간단하게 사용법을 정리해보았다. 아래에서 사용한 함수는 아래와 같다. 0. Foreach 1. FindAll(찾기) 2. Except(차집합) 3. ToDictionary(사전화) 4. Select(골라내기) 5. Sum/Min/Average(집계) 6. Aggregate(누산) 7. Dictinct(중복 제거) 0. Foreach 123456789101112131415161718192021222324252627282930// 번호와 이름을 갖는 구조체struct SchoolMember{ public int UID; public string strName;} // 리스트를 출력하는 함수.public static void Print( this List lst ){ ls..

Programming/C# & Unity

C# 4.0 쓸만한 기능

세미나하면서 알게된 기능 두개. 쓸만해보여서 기록함. 1. 함수 파라미터에 콜론 (선택적 인수) (https://docs.microsoft.com/ko-kr/dotnet/csharp/programming-guide/classes-and-structs/named-and-optional-arguments) 선택적 인수는 항상 끝에 나열되기 때문에, 새로운 인수를 추가하는 과정이 매우 번거롭다. 그리고 선택적 인수가 여러개 있을 때, 한개의 값만 넣으려고 하면 C++은 매우 불편했다.. static void Main( string[] args ) { List lstInteger = new List(); PrintTypeOfC( 1, null, lstInteger ); // 이렇게 중간에 선택적 인자에 값을 넣..

Programming/C# & Unity

C# 비동기 루프 및 실행

개요 .Net C#에서 지원해주는 *Awesome* 한 비동기 기능에 대해서 간단히 기록하려고 게시글을 작성합니다. 정확히는 Parallel 클래스에 관련된 함수들을 소개합니다. Parallel 클래스 간단하게 비동기 작업을 수행할 수 있도록 도와주는 클래스입니다. Task나 Action, Thread 같은 것들을 직접적으로 만들 필요 없이 기존에 사용하던 Loop나 함수처럼 간단히 사용할 수 있습니다!! Parallel.For (비동기 루프) 루프를 여러 스레드로 나누어 수행하도록 합니다. // iToPage까지의 게시글 내용을 하나하나 긁어오는 함수. List GetBoardContents( int iToPage_ ) { List lstResult = new List(); for ( int iPage..

Programming/C# & Unity

C# ThreadLocal

개요 스레드 별로 독립적임을 보장해주는 자원을 만드는 템플릿 클래스이다. 아래 예를 보면 금방 이해가 될 듯. 예1 - 기본 사용법 // 쓰레드별로 서로 다른 Counter를 갖는 싱글턴 클래스 public class ThreadLocalClass : Singleton { // 글로벌 카운터 private static Int32 _iCounter = 0; // 쓰레드 전용 카운터 private ThreadLocal _iLocalCounter = new ThreadLocal( () => { return Interlocked.Increment( ref _iCounter ); } ); public bool Init() { return true; } // 쓰레드 전용 카운터 출력 public void Print..

Programming/C# & Unity

C# ?. ?? 연산자

개요 ?. ?? 모양부터 ??하게 만드는 연산자. 무슨 연산자인지 살펴보자. ?. 연산자 ?. 연산자는 [ Null이 아니라면 참조하고, Null이라면 Null로 처리 ]하라는 뜻이다. class CClass { public List lstNumber = new List();; }; static void Main( string[] args ) { CClass newClass = new CClass(); Console.WriteLine( newClass?.lstNumber ); // List 정보가 출력됨. CClass nullClass = null; Console.WriteLine( nullClass?.lstNumber ); // 아무것도 출력되지 않음. (null) } 아래의 CClass의 경우에는 멤..

Programming/C# & Unity

Visual studio 2017 유니티 디버거 system.reactive.linq.observable 오류

한글로는 system.reactive.linq.observable 이니셜라이저에서 예외를 어쩌고...영어로는 The type initializer for 'System.Reactive.Linq.Observable' threw an exception 이런 에러가 난다면VS를 삭제하고 15.4.5 버전으로 받아야함.최신버전 VS와 RX에서 오류가 발생하는듯. 이전 버전 받는 주소.https://docs.microsoft.com/ko-kr/visualstudio/productinfo/installing-an-earlier-release-of-vs2017

Programming/C# & Unity

Unity UI에 Onclick 넣기

using UnityEngine.EventSystems; public class ClickAction : MonoBehaviour, IPointerClickHandler { public void OnPointerClick(PointerEventData eventData) { // OnClick code goes here ... } }출처 : https://stackoverflow.com/questions/40567303/onclick-event-for-image-in-unity 비슷한 방법으로 다른것도 추가가능

장형이
'Programming/C# & Unity' 카테고리의 글 목록 (2 Page)