728x90
반응형

unity 77

Unity에게 MonoBehaviour란..? [Unity]

유니티에서 New Sciript로 뭐만 만들면 항상 기본적으로 상속되는 클래스 중 하나인데 뭐하는 애일까?? 알아보자 MonoBehaviour 클래스는 유니티에서 미리 만들어져서 제공되며 컴포넌트에 필요한 기본 기능을 제공한다. 줄여서 말하자면 MonoBehaviour에는 컴포넌트에 필요한 필수 기능들이 들어가있다. 다시 말하면 MonoBehaviour를 상속받아야만 컴포넌트 기능을 쓸 수 있는 것이다. **유니티의 모든 컴포넌트는 MonoBehaviour를 상속한다. 컴포넌트를 이해하기 위해 컴포넌트 패턴이 어떻게 작동하는 지를 알아보자. 컴포넌트들은 서로 관심이 없다. -> 어떤 컴포넌트는 다른 컴포넌트에 의해서 "의도하고 찾아내기"전 까지 알 수가 없다. 마찬가지로 유니티 엔진에서도 해당 컴포넌트가..

Async , Await 키워드, 비동기 프로그래밍(Asynchronous Programming) [Unity]

기존에도 비동기 프로그래밍 방법이 있었지만 Async와 Await은 C# 5.0부터 더 나은 비동기 프로그래밍을 지원하기 위해 나온 키워드이다. 알아보자 우선 Docs의 정의는 await 연산자는 피연산자가 나타내는 비동기 작업이 완료될 때까지 바깥쪽 await 메서드의 평가를 일시 중단합니다. async 한정자를 사용하여 메서드, async 또는 무명 메서드를 비동기로 지정합니다. 메서드 또는 식에 이 한정자를 사용하면 비동기 메서드라고 합니다. **참고로 C# 7.0 에서는 이러한 3가지 async 리턴타입에 대한 제약을 넘어 커스텀 리턴 타입을 허용하게 되었다. -> Custom 리턴 타입의 하나로 .NET Framework에서 ValueTask 라는 타입이 제공되고 있는데, Nuget 패키지에서 ..

C#/Unity Event - 개념

Event에서 간단하게 정리하려고 한다. 알아보자 무엇이냐??? Event는 C#이 지원하는 하나의 기능으로 특정한 일(event)이 있어났음을 외부의 이벤트 가입자(subscriber)들에게 알려주는 기능을 한다. 즉, 외부와의 커플링, Coupling을 줄이기 위한 도구 중 하나이다. 왜쓰냐?? 위에서 말했다시피 Coupling을 줄여줌은 물론 Event가 발생했을 때만 Subscriber된 함수가 실행됨으로 Update로 항상 지켜보지 않아도 된다는 장점이 있다. -> 하지만 해당 Event를 발생시키는 것은 Update로 봐야한다는 단점도 존재한다. 결국 Event의 Event도 어차피 누군가는 감지를 해야 발행할 수 있으니까..? 어떻게 사용하는 지를 보면서 더 감을 잡도록 하자. 어떻게 쓰냐?..

UniRx, Reactive Extension for Unity - 개념

UniRx가 무엇이길래 요즘에 엄청 많이쓰나?? 알아보자 무엇이냐?? UGUI, GameObject 등의 유니티의 시스템으로도 쉽게 Reactive Programming 의 사용을 가능하게 한다. 즉, 비동기적 처리를 더 효율적으로 하기 위한 도구 중 하나라는 말이다. 기존에는 그렇다면 비동기처리 도구가 없었느냐? 있다면 기존의 것은 뭐가 안좋은데?? 없었던 것은 아니었다. 닷넷에는 .NET Rx이라는 것이 있었다. 하지만 Unity에 최적화된 것은 아니었다. 즉, UniRx는 Unity C#에 최적화되어 만들어져있다. 때문에 Unity 개발에 유용한 기능이나 오퍼레이터가 추가적으로 구현되어 있다. 게다가 ReactiveProperty 등이 추가되어 있다. 그래서 UniRx가 기존의 닷넷에서 쓰던 Rx보..

프로젝트 -3[Unity]

github.com/powerpower2005/MiniProject/tree/master 이 프로젝트로 얻고자하는 바 사용자 입력을 스크린에서 처리 기본적인 Physics + 부드럽게 움직이게하기(ex.Lerp) 배경효과 Parallax 적들의 움직임 구현 각 영역 히트효과 쉴드 기능 아이템 랜덤드랍 게임목표 wasd로 움직이며 space로 발사한다. 우주선과의 싸움에서 이겨 아이템을 먹으며 강해지자. 작업 내역 및 구현한 부분 Hero Input을 GetAxisRaw가 아니라 연속적으로 받는다. 이 값을 Rotation에 이용함 -> 2D로 보이는 게임이면서도 애니메이션 없이 이동하는 모션을 만듬 (z축 이용 3D) /////////////////////////////////////// Shield T..

프로젝트 -2 [Unity]

github.com/powerpower2005/MiniProject/tree/master 이 프로젝트로 얻고자하는 바 카메라이동 사용자 입력을 스크린에서 처리 기본적인 Physics + 부드럽게 움직이게하기(ex.Lerp) 배경효과 Trail효과 게임목표 투사체를 이용하여 공을 Goal에 도달하게하라. 지난 궤적을 이용하여 조금 더 정밀하게 쏘고 적은 횟수로 클리어하자. 작업 내역 및 구현한 부분 Follow Cam 요약: 앵그리 버드의 새가 날아가면 카메라가 새를 따라가는 것처럼 구현함 투사체가 발사되면 카메라가 따라감. 상세: Main Camera에서 static으로 gameobject를 선언해주고 Prefab을 Instantiate할 때 static 오브젝트에 할당해줌 카메라는 해당 static 오..

Camera, 카메라에 대한 것들 [Unity]

카메라에 대해 한 번 모든 것들을 정리해보려고 노력 중이다. 알아보자 1. Perspective vs Isometric(Orthographic) **사실 뒤에 나오는 Projection Transform에서 다시 설명한다. 여기 gizmo가 있다. 바로 카메라를 보여주는 방식을 결정하는데 아래에 현 상태가 나와있다. 위 사진 상태는 Perspective 상태로 Toggle 기능을 가지고 있어서 한 번 누르면 다른 상태로 바뀐다. Isometric 상태로 바뀐다. ** Isometric is usful in combination with clicking one of the conical axis arms to get a front, top or side elevation. -> 2D라고 생각하면 gizmo..

게임 일시정지하기, 퍼즈, pause 만들기 [Unity]

간단하다. 하지만 응용은 무궁무진하다. 버튼을 눌러서 일시정지 상태를 조절할 수 있고 어떠한 조건에 걸리면 일시정지 후 어떤 행동을 할 수 있다. using System.Collections; using System.Collections.Generic; using UnityEngine; public class Util : MonoBehaviour { bool isPause; //초기화 void Start () { IsPause = false; } void Update () { if (여기서 내가 원하는 조건이 들어갈 수 있다.) { //퍼즈 if (IsPause == false) { Time.timeScale = 0; IsPause = true; return; } // 퍼즈 풀기 if (IsPause =..

주어진 좌표에서 가장 가까운 값 추출하기 - C#, Unity

물론 어렵진 않았고 어떻게 해야할 지는 알았으나 언어를 많이 배우면 단점이... 내가 아는 함수가 이 언어에도 있나? 파라미터는 다르지 않나? 헤더를 include인가? import인가?? 가 헷갈린다. https://www.codingame.com/ide/puzzle/defibrillators 아무튼 어렵진 않았다. # 풀이 using System; using System.Linq; using System.IO; using System.Text; using System.Collections; using System.Collections.Generic; using System.Globalization; /** * Auto-generated code below aims at helping you parse..

주어진 글자 디스플레이에 출력하기 - Unity

뭐 C#이다만 Unity에서도 응용가능하니까.. 솔직히 처음에 쉽다고 생각했지만 조금 시간이 걸렸고 정규표현식으로 더 완벽하게 하려고 시간 더 걸렸다. https://www.codingame.com/ide/puzzle/ascii-art 또한 '?' 가 Z 다음 아스키코드 문자가 아니기 때문에 예외처리를 해줬어야 했다. 이런 거지같은 ㅋㅋㅋㅋㅋ 아스키코드 값을 뭘로 주든 순서대로 준다면 모든 문자를 디스플레이에 표시할 수 있는 코드다. 물론 정규표현식이나 ToUpper() 같은 것은 조금 수정해야겠지만 아무튼 그렇다.

728x90
반응형