본문 바로가기

코딩 공부/Unity C#

클래스 상속 C#에서는 자식은 하나의 부모 클래스만 상속할 수 있다   - 부모 클래스의 생성자 (this는 해당 객체를 뜻함)- 부모 생성자의 코드를 카피하지 않고 : base(필드명)을 사용하면 똑같은 효과를 볼 수 있다- virtual로 override할 메서드를 표시한다 virtual : 메서드의 동작을 재정의하거나 변경할 수 있다- 부모 클래스와 동일한 메서드를 오버라이드했다(메서드의 내용이 다름)- 자식클래스(Gamer, Geek)의 타입을 부모클래스(FamilyMember)로 설정한다(자식클래스의 타입으로 정의할 수도 있지만 다형성을 위해 부모클래스로 하는 것이 좋다) 더보기
PlayerPrefs 게임에서도 쓰기 데이터를 읽고 싶어요But... 게임 플레이 세션 동안 데이터를 지속해야 하며, 세션 결과에 따라 데이터가 변경될 수 있다(ex. 진행상황, 인벤토리, 플레이타임) >>> PlayerPref를 사용하여 해결할 수 있다 PlayerPrefs란? : 게임 세션 간 플레이어 선호도를 저장하고 접근하는 클래스 키(key) - 값(value) 형태로 저장된다작동방식- string 데이터 " key"는 값을 찾는데 사용할 수 있다- key로 조회한 PlayerPrefers의 값은 float, int, string일 수 있다- key를 사용하여 value를 설정하고(set), 가져올 수 있다(get)PlayerPrefers의 static 메서드 목록 프로그램 설명: 게임을 실행하고 Enter Game.. 더보기
게임 구성 데이터 파일 game configuration data files 소스 코드를 건드리지 않고 게임을 튜닝할 수 있게 하는 방법 (게임 디자이너가 소스 코드를 건드리지 않고 디자인을 할 수 있도록 하는 법)> 게임 구성 데이터 파일을 사용한다 게임 구성 데이터 파일의 종류 2가지 CSV 파일 (Comma-Separated Value)쉽게 내보낼 수 있음: 스프레드시트 프로그램에서 데이터를 쉽게 CSV 형식으로 저장할 수 있다. 읽기 어려움: CSV 파일의 원본 데이터를 읽기 어렵다. 데이터가 단순한 텍스트로 나열되기 때문이다. XML 파일 (eXtensible Markup Language)읽기 쉬움: XML 파일은 구조화된 형식으로 데이터를 저장하므로 사람이 읽기 더 쉽다. 태그를 사용하여 데이터의 의미를 명확히 할 수 있다. 커스텀 XML 편집기 필요: XML 파일을 .. 더보기
텍스트 파일 입력 및 읽기 예제 풀이 // 텍스트의 라인 개수를 저장하는 리스트 변수 List lineInput = new List(); // Creat text file with StreamWriter StreamWriter output = null; try { // 프로젝트 파일 Debug 폴더 내에 텍스트 파일 생성 output = File.CreateText("hiho.txt"); output.WriteLine("Wow i am a"); output.WriteLine("Jack Frost"); output.WriteLine("Im so adorable"); output.WriteLine("Yahaha"); } catch (Exception ex) { Console.WriteLine(e.. 더보기
텍스트 파일, 작성 및 읽기 (StreamWriter, StreamReader) C#에서 텍스트를 쓰기 위한 클래스인 StreamWriter와 TextWriter의 차이점Using 지시문 없이 StreamWriter을 써도 오류가 발생하지 않는 이유- Visual Studio가 자체적으로 지시문을 추가해뒀기에 오류가 발생하지 않는다.맨 위의 체크박스를 해제하면 오류가 발생한다.텍스트 파일 작성하는 법- StreamWriter 객체를 null로 초기화한다- 예외를 발생시킬 수 있는 코드를 try문 안에 작성한다(운영체제에서 만들 수 없는 경로에서 파일을 생성하려고 하면 예외 발생 가능성이 있다)- OneStepCloser.txt 라는 이름의 파일을 생성한다- 파일의 텍스트를 작성한다- catch 블록에서 모든 예외를 처리한다- finally는 무조건 마무리 블록으로 들어가 있어야 한다.. 더보기
예외 처리기 try, catch - short 데이터 타입에 문자를 입력하거나 범위 밖의 숫자를 입력하면 예외가 발생하여 충돌이 생긴다- 충돌 없이 예외를 처리하기 위해 try 메서드를 사용한다- try는 catch 혹은 finally와 같이 쓰여야 한다 - catch 문은 if문의 작동 방식과 유사하다- FormatException(데이터 타입 불일치), OverflowException(범위초과 오버플로우 발생)으로 예외를 세분화한다- finally는 예외 발생 여부에 상관없이 무조건 마지막에 실행되는 구문이다 더보기
오디오 관리자 추가 Audio Manager AudioSource는 오디오 클립을 재생하는 컴포넌트- 하나의 AudioSource는 하나의 오디오 클립만을 동시에 재생할 수 있다  AudioClip은 오디오 파일을 나타내는 객체 - 여러 개의 AudioClip을 준비해두고, 필요할 때마다 AudioSource에서 재생할 수 있다   AudioClipNsmes 스트립트- 사용되는 오디오 클립의 집합 GameAudioSource 스크립트 - 게임 시작 시 오디오 소스가 하나만 존재하도록 하고, 씬 전환 시 파괴되지 않게 한다- 처음 오디오 매니저가 초기화되지 않은 경우 초기화하고, 그렇지 않으면 새로 생성된 오브젝트를 파괴- 게임오브젝트에 컴포넌트를 추가하고 그 참조를 변수에 저장한다 AudioManager 스크립트- 초기화 여부를 노출할 수 있는 변.. 더보기
HUD, TextMeshPro 사용하여 텍스트 UI 설정하기 더보기문제 1 - 시작하기참고: 이 연습의 구조 중 일부는 연습 7에서 수행한 것과 일치합니다. 이 연습의 시작점으로 그 솔루션을 사용하고 싶다면 제가 한 것처럼 계속 진행하세요!새 Unity 프로젝트를 생성하고 현재 씬을 저장합니다. 화면의 네 면 모두에 카메라에 에지 콜라이더 2D 컴포넌트를 추가합니다. (게임에서) 중력을 끕니다. 모든 에지 콜리더와 바운서의 콜리더에 탄력 있고 마찰이 없는 피직스 머티리얼 2D를 추가합니다.문제 2 - HUD 추가계층 구조 창에 캔버스를 추가하고 캔버스 HUD의 이름을 바꿉니다. 캔버스의 캔버스 스케일러 구성 요소에서 UI 스케일 모드를 1280 x 720 참조 해상도를 사용하여 화면 크기에 따라 스케일링으로 변경합니다. HUD 캔버스에 HUD 태그를 추가합니다.캔.. 더보기