본문 바로가기

유니티

(16)
[유니티] 상속을 통해서 몬스터 구현해보기 유니티와 C#에 익숙하지 않았을 때, 굉장히 비효율적으로 코드를 짠 경험이 있다. 어떠한 점이냐면 몬스터의 패턴을 분리하기 위해서 여러 스크립트를 만들고 피격, 죽음 등의 함수를 각각 모든 스크립트에 넣었다. 이는 상속의 기능을 공부한 이후로 정말 비효율적인 구현이라고 느끼게 되었다. 상속이란? C#의 특징인 객체지향언어의 속성중 하나로, 객체가 다른 객체를 상속받아서 상속받은 부모 객체의 모든 특성을(변수,함수 등) 사용하는 것을 의미한다. 사실 유니티를 처음 하는 사람들도 상속의 기능을 쓰게 되는데, 바로 유니티 내에서 스크립트 생성시 Monobehaviour을 자동으로 상속받게 되기 떄문이다. 우리가 처음 유니티를 입문할떄도 사실 상속 기능은 항상 사용하고 있었다. 자 이제 , 어떠한 경우에 상속이..
[유니티] 오브젝트 풀링 Object pooling에 대해서 알아보자 오브젝트 풀링은, 게임 내에서 계속해서 재활용되는 오브젝트들을 Instantiate/Destroy 하지 않고, 컨테이너에 그 오브젝트들을 넣은 후 SetActive를 통해서 오브젝트의 생성,파괴를 연출하는 방법이다. 오브젝트가 생성되고 파괴될 때 Instantiate/Destroy를 사용하게 되면 성능 소모와 프레임 저하가 발생할 수 있기 때문이다. 코드 using System.Collections; using System.Collections.Generic; using UnityEngine; public class ObjectPooling : MonoBehaviour { [SerializeField] private GameObject objectPrefeb; Queue ObjectPool = new Q..
[유니티] 반복되는 배경을 사용해서 런닝게임 기초 만들기(무한 스크롤링) 게임을 만들 때 배경은 중요하다. 특히, 캐릭터의 움직임을 표현하는 과정에서 캐릭터가 직접움직이는 경우도 있지만, 배경을 움직이게 해서 캐릭터가 앞으로 나아가는듯 보이게 하는 방법도 있고 실제로 사용되는 경우도 많다. 오늘은 뒷 배경을 계속해서 한 방향으로 움직이는 방법으로 캐릭터의 움직임을 표현해보도록 하겠다. 먼저, 배경으로 쓸 Image를 준비한다. 이미지를 project창에 넣고, Insepector를 통해서 위의 사진처럼 Wrap mode를 Repeat으로 설정해준다. 유니티 Hierarchy-우클릭-3D Object-quad를 통해서 quad를 생성해주도록 한다. 이 만들어진 quad를 ,카메라 크기만큼 늘려준다. 다음으로는 quad에 넣을 material을 만들어 줄 것이다. 유니티 proj..
[유니티]Firebase Database를 이용해서 유저들이 가입한 후 채팅하는 어플 만들기 회원가입과 로그인에 더 자세한 정보는 https://sharp2studio.tistory.com/36?category=884092 [유니티] Firebase Database를 이용한 회원가입, 로그인 구현 기본적인 세팅은 https://sharp2studio.tistory.com/32 이 글을 참고하면 된다. 왼쪽 빌드에서 Authentication에 들어가서 로그인 방법을 설정해준다. 여러개가 있지만, 가장 간단한 이메일로 구현을 해보겠다. sharp2studio.tistory.com 이 포스팅에 정리했다. 회원가입을 도와줄 SignUp 씬과, 로그인을 도와줄 SignIn 씬, 마지막으로 채팅창을 구현한 Main 씬 이렇게 3가지 씬을 만들것이다. Project에서 우클릭 후 create-scene 기..
[유니티]TextmeshPro 사용 시 한글이 깨질 때 유니티 기본 제공인 text보다, textmesh pro가 성능과 기능면에서 좋다. 따라서, 나는 개발할때 대부분 textmesh pro를 사용하는데, 처음 사용 시 내가 받아온 폰트에서 한글이 입력 안 되는 경우가 있을것이다. 유니티 왼쪽 상단의 Window > TextMeshPro > Import TMP Essential Resources클릭시 설치가 된다. 설치 후에 다시 왼쪽 상단의 Window > TextMeshPro > Font Asset Creator를 눌러주면 위와 같은 창이 뜰 것이다. 건드려야 할 것은 먼저 Source Font File에 내가 구해온 폰트파일을 넣어준다. 또한 Atalas Resolutuon은 폰트 해상도인데, 4096x4096으로 맞춰준다. Character Set은..
[유니티] Firebase Database를 이용한 회원가입, 로그인 구현 기본적인 세팅은 https://sharp2studio.tistory.com/32 이 글을 참고하면 된다. 왼쪽 빌드에서 Authentication에 들어가서 로그인 방법을 설정해준다. 여러개가 있지만, 가장 간단한 이메일로 구현을 해보겠다. 이메일/비밀번호 사용만 설정해주고 저장을 해준다. 앞서 다운 받았던 sdk중에서 Auth를 import해준다. (자신의 유니티 버전이 Unity 5.x버전이면 dotnet 3, Unity.2017 이상이면 dotnet 4 폴더) 이제, 회원가입을 위해서 이메일과 패스워드를 입력받는 화면을 만들어준다. Input Field를 통해 입력창 두개와, Button을 통해 입력 시 누를 버튼을 만들어준다. 이 때, 패스워드 Input field의 Content type을 pa..
[유니티] Firebase Database에 저장된 값 정렬하기 , 문제 해결 계속해서 firebase database를 이용했을 시, 데이터를 정렬하는 법에 대해 알아보겠다. firebase database에 정렬할 때 사용하는 함수는 3개가 존재하는데, 그 중 가장 많이 사용되는 것은 OrderByChild()이다. 예를 들어서, 내가 구축한 db의 현재 상황이다. 이를 평범하게 점수만 읽어오면 {40,15,35}라는 값을 받아 올 것이다. 이 때, firebase에서 제공하는 OrderByChild함수를 사용할 경우에는 점수에 따라서 오름차순으로 정렬된 값을 바로 받아올 수 있다. void ReadData() { FirebaseDatabase.DefaultInstance.GetReference("rank").OrderByChild("score") .GetValueAsync()..
[유니티] Firebase Database 실시간 데이터 변화 감지하는 함수 만들기 using System.Collections; using System.Collections.Generic; using UnityEngine; using Firebase; using Firebase.Database; using Firebase.Extensions; public class MakeHintManager : MonoBehaviour { DatabaseReference dataReference; void Start() { dataReference = FirebaseDatabase.DefaultInstance.RootReference; dataReference.ValueChanged += ValueChanged; } void ValueChanged(object data,ValueChangedEven..