MMO_Unity [Unity] 타게팅 락온 저번 포스트에서는 마우스를 적 위에 올렸을 때 평소와는 다른 커서가 나오도록 설정했다. 이번 포스트에서는 적을 클릭했을 때의 행동을 정하도록 한다. 땅을 처음 클릭하고 마우스를 누르고 있는 상태에서 포인터를 움직이면 캐릭터가 포인터를 따라 움직여야 한다. 하지만 적을 처음 클릭했다면 마우스를 누르며 포인터를 움직여도 플레이어는 적에게 가도록 하고 싶다. 그러기 위해 먼저 코드를 수정해야 한다... 유니티MMO_UnityMMO_Unity [Unity] 적 생성 및 스탯, 마우스 커서 위 에셋을 적으로 사용했다. 위 에셋을 커서로 사용했다. 적과 플레이어의 전투를 위해 스탯을 관리하는 스크립트를 생성하도록 한다. 이제는 게임 내에서 적군을 클릭하거나 적군 위에 마우스를 올렸을 때의 경우를 따로 처리하고 싶다. 이를 위해 적군의 Layer를 Monster로 설정해준다. 그리고 기존의 Wall 레이어를 편의를 위해 이름을 Ground로 변경해 주었다. 코드 수정에 앞서, 에셋... 유니티MMO_UnityMMO_Unity [Unity] 플레이어 이동에 애니메이션 적용 마우스 클릭을 통해서만 플레이어가 이동을 하도록 변경하였다. 동시에 마우스 버튼을 누르고 있을 때도 플레이어 이동이 가능하도록 if (evt == press) 문을 삭제하였다. 기존 PlayerController의 Update()에서 사용되던 코드를 세부적으로 나눠서 UpdateMoving, UpdateIdle, UpdateDie에서 실행되도록 하였다. (State 패턴) 따라서 _movet... MMO_Unity유니티MMO_Unity [Unity] PoolManager 유니티에서 성능 향상을 위해 게임 내에 객체를 생성할 때 일일히 프리팹을 가져와 인스턴스화 하는것은 성능에 부하가 심하게 된다. 따라서 처음에 게임을 시작할 때 여러 개의 객체를 생성한 뒤, 그 객체들을 비활성화 했다가 필요시에 활성화를 하는 방법으로 성능 부하를 줄일 수 있다. 스택을 사용해서 풀링할 오브젝트를 관리한다. 먼저 Pool이라는 클래스를 생성, 풀링과 관련된 함수들을 정의한 뒤... MMO_Unity유니티MMO_Unity [Unity] UI 자동화 앞선 게시글에서 말했듯이 UI를 툴 상에서 드래그&드롭으로 설정한다면 프로젝트 규모가 커질수록 단점이 많아지게 된다. 그렇기 때문에 UI를 코드 상에서 자동화 할 필요성이 있다. UI의 클릭과 드래그를 구분하기 위해 Define.cs에 UIEvent라는 enum을 추가했다. Bind()를 통해 UI의 정보를 저장, Get()을 통해 정보를 가져온다. AddUIEvent()를 통해 UI 이벤트... MMO_Unity유니티MMO_Unity [Unity] 인벤토리 만들기 UI_Base를 상속받아 사용하면서 override 된 init()을 사용한다. 기존 UI_Base에는 init()함수가 없었기 때문에 UI_Base 클래스를 추상 클래스로 변경하고 abstract init() 함수를 추가했다.... MMO_Unity유니티MMO_Unity [Unity] SoundManager 사운드 리소스들을 BGM, Effect 등으로 구분하여 관리하기 위한 배열 하나와 코드의 최적화를 위한 Dictionary 타입 변수 하나를 선언했다. 위에 선언한 배열과 함수 내에서 선언한 배열을 사용해 게임 실행 시 @sound라는 컴포넌트를 생성하도록 한다. path를 인자로 받아서 오디오 클립을 불러오는 함수와 오디오 클립 자체를 인자로 받는 함수를 작성했다. 인자로 받은 type의 ... 유니티MMO_UnityMMO_Unity [Unity] 게임 실행 시 오브젝트의 Clone 텍스트 없애기 기존 Instantiate 함수를 사용하면 게임 실행 시 오브젝트의 이름에 (Clone)이라는 텍스트가 붙는다. 그대로 사용해도 상관은 없지만 보기에 불편하기에 SubString() 함수를 사용해 (Clone) 텍스트를 삭제했다. 이 부분이 텍스트를 삭제하는 역할을 한다. 이 때, return 시에 함수 내에서 인스턴스화 한 GameObject go를 return해야 한다.... 유니티MMO_UnityMMO_Unity
[Unity] 타게팅 락온 저번 포스트에서는 마우스를 적 위에 올렸을 때 평소와는 다른 커서가 나오도록 설정했다. 이번 포스트에서는 적을 클릭했을 때의 행동을 정하도록 한다. 땅을 처음 클릭하고 마우스를 누르고 있는 상태에서 포인터를 움직이면 캐릭터가 포인터를 따라 움직여야 한다. 하지만 적을 처음 클릭했다면 마우스를 누르며 포인터를 움직여도 플레이어는 적에게 가도록 하고 싶다. 그러기 위해 먼저 코드를 수정해야 한다... 유니티MMO_UnityMMO_Unity [Unity] 적 생성 및 스탯, 마우스 커서 위 에셋을 적으로 사용했다. 위 에셋을 커서로 사용했다. 적과 플레이어의 전투를 위해 스탯을 관리하는 스크립트를 생성하도록 한다. 이제는 게임 내에서 적군을 클릭하거나 적군 위에 마우스를 올렸을 때의 경우를 따로 처리하고 싶다. 이를 위해 적군의 Layer를 Monster로 설정해준다. 그리고 기존의 Wall 레이어를 편의를 위해 이름을 Ground로 변경해 주었다. 코드 수정에 앞서, 에셋... 유니티MMO_UnityMMO_Unity [Unity] 플레이어 이동에 애니메이션 적용 마우스 클릭을 통해서만 플레이어가 이동을 하도록 변경하였다. 동시에 마우스 버튼을 누르고 있을 때도 플레이어 이동이 가능하도록 if (evt == press) 문을 삭제하였다. 기존 PlayerController의 Update()에서 사용되던 코드를 세부적으로 나눠서 UpdateMoving, UpdateIdle, UpdateDie에서 실행되도록 하였다. (State 패턴) 따라서 _movet... MMO_Unity유니티MMO_Unity [Unity] PoolManager 유니티에서 성능 향상을 위해 게임 내에 객체를 생성할 때 일일히 프리팹을 가져와 인스턴스화 하는것은 성능에 부하가 심하게 된다. 따라서 처음에 게임을 시작할 때 여러 개의 객체를 생성한 뒤, 그 객체들을 비활성화 했다가 필요시에 활성화를 하는 방법으로 성능 부하를 줄일 수 있다. 스택을 사용해서 풀링할 오브젝트를 관리한다. 먼저 Pool이라는 클래스를 생성, 풀링과 관련된 함수들을 정의한 뒤... MMO_Unity유니티MMO_Unity [Unity] UI 자동화 앞선 게시글에서 말했듯이 UI를 툴 상에서 드래그&드롭으로 설정한다면 프로젝트 규모가 커질수록 단점이 많아지게 된다. 그렇기 때문에 UI를 코드 상에서 자동화 할 필요성이 있다. UI의 클릭과 드래그를 구분하기 위해 Define.cs에 UIEvent라는 enum을 추가했다. Bind()를 통해 UI의 정보를 저장, Get()을 통해 정보를 가져온다. AddUIEvent()를 통해 UI 이벤트... MMO_Unity유니티MMO_Unity [Unity] 인벤토리 만들기 UI_Base를 상속받아 사용하면서 override 된 init()을 사용한다. 기존 UI_Base에는 init()함수가 없었기 때문에 UI_Base 클래스를 추상 클래스로 변경하고 abstract init() 함수를 추가했다.... MMO_Unity유니티MMO_Unity [Unity] SoundManager 사운드 리소스들을 BGM, Effect 등으로 구분하여 관리하기 위한 배열 하나와 코드의 최적화를 위한 Dictionary 타입 변수 하나를 선언했다. 위에 선언한 배열과 함수 내에서 선언한 배열을 사용해 게임 실행 시 @sound라는 컴포넌트를 생성하도록 한다. path를 인자로 받아서 오디오 클립을 불러오는 함수와 오디오 클립 자체를 인자로 받는 함수를 작성했다. 인자로 받은 type의 ... 유니티MMO_UnityMMO_Unity [Unity] 게임 실행 시 오브젝트의 Clone 텍스트 없애기 기존 Instantiate 함수를 사용하면 게임 실행 시 오브젝트의 이름에 (Clone)이라는 텍스트가 붙는다. 그대로 사용해도 상관은 없지만 보기에 불편하기에 SubString() 함수를 사용해 (Clone) 텍스트를 삭제했다. 이 부분이 텍스트를 삭제하는 역할을 한다. 이 때, return 시에 함수 내에서 인스턴스화 한 GameObject go를 return해야 한다.... 유니티MMO_UnityMMO_Unity