728x90
반응형

unity 77

유니티 No Sprite Editor Window registered 해결 방법 [Unity]

3D 프로젝트에서 진행하다보면 이런 오류가 뜬다. 흔히 발견되는 오류로 2D에서 Multiple로 바꿨을 경우 발생한다 그래서 오류 해결방법은 간단하다. 저기 위에도 다운받아달라고 써있다. Window > Package Manager 가자. 내 프로젝트엔 없다. 그렇다면 유니티 안에는 들어있겠지? 있다 다운로드 받자 오 생겼다. 와 열렸다. ㅎㅎ 문제해결

프로젝트 게임 - 1 [Unity]

github.com/powerpower2005/MiniProject/tree/master **짧은 플레이 영상은 밑에 있음 이 프로젝트로 얻고자하는 바 Event 함수 체화 사용자 입력을 스크린에서 처리 기본적인 Physics와 점수 UI 일시적인 데이터 저장 게임목표 사과를 받아서 최고점수를 도달하자. 마우스로 움직인다. ** 키보드로도 입력받을 수 있다. 작업 내역 및 구현한 부분 Apple 요약: 사과 상세: 해당 값이 넘어가면 destroy하고 다른 스크립트의 메서드를 실행해서 Notify기능 -> 해당 오브젝트가 파괴되면 게임을 재시작해야함. ApplePicker 요약: 사과 줍는 사람 상세: Notify를 받으면 자신의 인스턴스를 하나 삭제하며 게임을 재시작하기 위해서 FindGameObjec..

Race Condition, 자원 경쟁, 경쟁상태 [Unity]

운영체제에서 세마포어, 뮤텍스... 등으로 많이 배운 Race Condition이다. 그렇게 Low하게 가지는 않을 것이고.. 유니티 내에서 조작해보자 맨 밑에 요약있음 우리는 유니티에서 값을 Initilaizing 후 사용한다. 하지만 Start()에 넣을 수도, Awake()에 넣을 수도 있다. 때문에 초기화 도중 만들어지기도 Object에 접근하는 상황이 발생해서 맨날 일어나는게 NullReferenceException Error다. 물론 Awake에 있는 것을 Start로 보낼 수 있으나.. 다른 방법도 존재한다는 것을 알아두자 스크립트 또한 우리가 실행순서를 정할 수 있다. 유니티 메뉴바에서 Edit -> Project Settings에 들어가서 아래와 같이 찾아볼 수 있다. 요약 1. Even..

Enumeration, 열거,나열 [Unity]

바로 본론으로 들어가자. Enums은 보통 클래스를 정의할 때 클래스의 property 값을 정할 때 사용될 수 있다. 변수가 적절한 값을 갖게할 수 있고 숫자를 문자열로 나타낼 수 있다. public enum ePetType{ none, dog, cat, bird, fish, other } 이와 같이 그냥 나열하면 된다. 대부분 클래스 밖에서 정의된다. ** enum은 따로 선언되지 않으면 순서대로 값을 가진다. none = 0, dog = 1 ... 이런 식으로 public enum eLifeStage{ baby, teen, adult, senior, deceased } 이제 클래스에서 사용해볼까 물론 사용할 때 enum's type으로 사용하면 된다. 아래의 ePetType처럼 자료형을 저렇게 쓴다..

Static Method, 정적 메서드 선언 [Unity]

바로 설명 들어가자 정적 메서드는 우리가 일반적으로 사용하는 인스턴스(Instance) 메서드와는 다르게 클래스로부터 객체를 생성하는 방법으로 호출하는 것이 아니다. 직접 .으로 호출한다. ex) Mathf.Sin(....) ++ 우리가 클래스로 객체의 이름을 자유롭게 바꾸는 것과 다르게 얘는 클래스니까 바꿀 수 없다고 보면 된다. ** 메서드 내부에서는 클래스의 인스턴스 객체 멤버를 참조해서는 안된다. static인 변수나 전역(global)로 선언된 변수들만 사용이 가능하다. 보통 종속적이지 않게 구현하려고 쓰는 모양이다. 가독성을 높이기 위해 namespace와 class를 묶어서 사용하기 위해 쓰기도 한다고 한다. Mathf. 같은 메서드들이 그런 용도로 쓰이고 있다.

static과 static public 의 차이, 정적 변 [Unity]

조금 궁금한 주제였다. 근데 알아볼 기회가 생겨서 바로 알아봤다. 우선 우리는 Static은 정적선언이고 Stack 영역에 저장되어 프로그램이 내려가기 전까지 계속 있을 것이란 것을 알고 있다. 그렇다면 어차피 정적인데 아무데서나 public을 붙이나 마나 불러올 수 있는 것 아니냐??? 라는 의문이 든다. 사실 그렇지 않다. 구분하는 이유가 있었다. 접근제한자를 설정하지 않으면 자동으로 protected로 암묵적으로 선언된다. 즉, 자신을 포함한 Children만 사용이 가능해진다. static으로만 선언하면 다른 클래스에서는 불러올 수 없는 것이 된다는 것이다. 이것이 static 과 static public의 차이다. 아래 글도 참고하자. [Unity, 유니티/Basic, 기본] - Static M..

카메라 크기에 맞춰서 경계 설정하기, Boundary [Unity]

나는 슈팅게임을 하는데 필요했고 뭐 다른 이유로도 화면 밖의 것들을 지우고 싶을 때가 많을텐데 플레이어가 보는 카메라는 항상 존재하니까 그 크기에 맞춰서 짠다면 괜찮지 않을까? 이 스크립트를 어디에다도 쓸 수 있지 않을까??? 알아보자 **해당 카메라는 Orthogonal이어야 적용되도록 만들었다. 나는 이렇게 경계를 설정하려고 한다. 1. 카메라의 크기를 구한다. 2. 해당 오브젝트의 위치를 경계와 비교한다. 3. 경계에서 벗어나지 못하게 제약을 둔다. 변수들, variables [Header("Set in Inspector")] public float radius = 1f; public bool keepOnScreen = true; // this allow object to go through bou..

투사체 경로 흔적 남기기, ProjectileTrail [ Unity]

투사체에 Effect를 주거나 흔적을 남기고 싶을 때가 있다. 아니면 앵그리버드처럼 궤적을 남기거나 무슨 일을 하고싶을 때가 있다. 알아보자 우선 유니티에는 Trail Renderer라는 것이 내장되어있다. 그래서 단순히 이 렌더러를 붙여서 약간을 조작하는 것만으로도 Trail을 그릴 수 있다. 스크립트 없이도 단순히 해당 투사체에 렌더러를 붙여 조작하는 것만으로도 충분히 좋은 효과를 만들 수 있다. 뭐 이런 식으로 만들 수 있다. 이렇게 많은 Property들이 있어 가능하다. 모든 것을 살펴볼 필요는 없고 주요 기능을 보자면 Time: Trail을 몇 초 동안이나 유지할 것이냐? -> 값이 커지면 Trail이 Scene에 더 오래 남아있음 Width: Trail의 시간에 따른 넓이를 어떻게 할 것이냐..

마우스 입력 받아서 이용하는 4가지 방법[Unity]

마우스는 스크린에 있지만 이용하려면 WorldSpace로 변환하던가.. 무엇인가 해야하는 상황이 있다. 마우스 입력을 받아서 이용하는 방법에 대해 알아보자. 0 번째 방법 Input.mousePosition 얘는 그냥 Screen을 바로 출력해서 해상도가 1920 * 1080이면 오른쪽 위를 클릭하면 (1920,1080)을 반환한다. 본격적으로 첫 번째 방법 ScreenToWorldPoint( ) 이 방법은 2D게임이나 3D를 isometric으로 볼 때 많이 쓴다. ** 그 외적으로는 우리가 기대한만큼의 정확성을 기대하기 어렵다. 적어도 x,y를 우리가 스크린에서 조절할 수는 있지만 z에 대해선 마우스로 조절할 수 없는 영역이다. 우리가 저기서 Input.mousePosition에서는 z 성분을 얻을 ..

Invoke로 인한 문제점 [Unity]

오브젝트 풀링을 사용할 경우 미리 만들어놓고 끌어다 쓰는 경우다. 물론 비활성화되어있기에 스크립트가 단독으로 실행되는 경우는 없으나 나는.. 이것 때문에 2시간 날린듯... 영어로 구글링을 치고 한글로 검색한 끝에 원인을 찾았다. 바로 비활성화되었음에도 메서드가 실행되어서 Null이 뜨는 것... Debug.log(this)로 찾아냈지만 그 오브젝트가 실행되는 이유를 알 수 없었다. 아니.. Awake나 OnEnable로 잠깐 활성화된 시간이 있다해도 비활성화되면 꺼져야하는 것 아니냐??? 라고 생각했다. 하지만 아니었다. 활성화 또는 비활성화에 따라서 - OnEnable/OnDisable 이벤트 함수가 호출된다. - 게임 오브젝트가 비활성화되면 GameObject.Find 및 GameObject.Fin..

728x90
반응형