728x90
반응형

Game Development, 게임개발 182

Invoke로 인한 문제점 [Unity]

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

배경음악 설정하기, 볼륨 조절, 씬이동에도 지속하기 [Unity]

이 글에서 다룰 것은 2가지 씬 이동에도 배경음악이 흐르게 하기 배경음악 소리 조절하기 바로 들어가보자. 요약 게임이 시작하면 배경음악이 흐름 다른 씬으로 넘어가더라도 음악이 흐름 옵션에서 배경음악의 크기를 조절하게끔 하고 싶음 오디오 소스를 넣기 위해 오브젝트를 만든다. WIndow -> Audio 에서 Audio Mixer를 열어준다. Group에 Music이라는 다른 믹서를 만들어준다. (배경음악만 조절하기 위함) Music을 클릭하면 Inspector 창에 뜬다. 우클릭을 하여 expose를 해준다. 그다음 자기가 원하는 Parameter이름을 설정해준다. 지금까지 한 작업 볼륨믹서를 만들어 배경음악만 조절하기 위한 준비 볼륨믹서를 스크립트에서 조절하기 위한 준비 배경음악을 플레이해주는 오브젝트 ..

UI, 유저인터페이스 응용 - 인벤토리 만들기

참고링크를 따라서 만들 것이다. 이런 식으로 진행할 예정이다. 아이템 구현, 장착, 장착해제 등등 우리가 하고 싶은 것은 다 한다. 우리의 게임은 구성이 이렇게 되어있다. 와 정말 복잡해 보인다!! 하지만 이렇게 객체 지향을 잘 따르는 설계는 좋다. 해보자 원활한 게임을 위해 우리가 만들어야 하는 메서드들을 잠깐 살펴보자 인벤토리에 필요한 애들이다. 오.. 우리가 이러한 메서드를 구현해야 한다는 말이다. ㅎㅎ따라서 만들 것이다. 당연히 다른 스크립트도 존재한다. 이런 것들을 다 해야한다니 너무 신난다 ㅎㅎ 재밌게 만들려면 피땀눈물ㅠ 다 들어가야하나보다. 필요한 것들을 알았으니 이제 만들어보자. 참고링크 learn.unity.com/tutorial/building-out-an-inventory-system

객체지향적으로 생각하기, Object-Oriented Thinking

우리가 편하다고 생각하는 프로그래밍언어의 특징이 바로 객체지향프로그래밍언어다. 더 잘 이해하기 위해선 어떤 요소가 특징이고 어떻게 생각해야하는지 배워보자. 개인적인 의견이 더 많이 들어갈 듯 싶다. **2023.08.06 추가 우선 왜 우리는 객체지향언어가 편할까??? 우리가 생각하는바를 실제 프로그래밍언어로 구현했기때문이다. 예를 들면 자동차를 길게 만들면 버스고, 빠르게 만들면 스포츠카, 크게 만들면 트럭인데..? 자동차에 대한 기본원리는 같지 않을까? 버스, 스포츠카, 트럭은 모두 자동차의 특징을 상속받는다. 반대로 버스, 스포츠카, 트럭을 추상화하면 자동차가 나온다. -> 이러한 모든 생각을 프로그래밍 언어에도 적용했다. 우리가 개발하기 편해진 OOP의 특성을 알아보자. 크게 4가지로 나눌 수 있..

UI, 유저인터페이스 기본 - 5 Overflowing Information, Scrollbars, and Other Tricks [Unity]

이제 다음 UI 에 대해서 배워보자. 왜 이렇게 기본이 많아? 라고 생각할 수 있겠지만 기본을 다 하면 응용은 무한대로 가능하니까 참도록 하자. 저런 것들 살짝 찍먹해보자 처음엔 애니메이터를 이용을 해보려고 한다. 글자가 화면 밖으로 이동하게해서 없애려고 한다. 애니메이션 클립 만들고, 불리안 값 정하고 스크립트로 작동하게 하면 되겠다. 우선 보기엔 간단해보인다. 가보자 텍스트를 우선 만든다. 텍스트 컴포넌트에 애니메이터 추가 추가했으면 이제 애니메이터 작동을 위해 애니메이터 창과 애니메이션 창을 연다. ++둘이 위아래로 붙어있다. 애니메이션을 추가하자. 추가했으면 속성, Property도 추가해주자. 우리는 Anchored Position을 쓰려고 한다. 저기 빨간색을 누르면 녹화가 되는데..? 녹화를..

UI, 유저인터페이스 기본 - 4 Toggles, Sliders, Inputs, and Dropdowns [Unity]

그렇다고 인터페이스가 버튼만 있지는 않았으니.. 더 있다. 당연하게도 이렇게 더 있다. 토글, 슬라이더, 입력창, 체크박스 등등 알아보자 먼저 Input Field부터 알아보자 여기 씬에 Configuration Panel이 있다. 굳이 해석하자면.... 구성요소..라고나 할까?? 해석하기 어렵다. 아무튼 여기다 Input Field를 넣으려고 한다. 짠! 생겼다. 엥.. 버튼처럼 생겼네 혹시 child처럼 딸려오나?? 정답! Placeholder는 우리가 입력을 하고 있지 않을 때 보여지는 텍스트다. ++ 전화번호 ex) 000-0000-0000 이런식으로 입력해야 할 텍스트를 설명할 때 사용한다. 실제 값을 가지진 않는다. -> 입력하지 않는다고 해서 placeholder의 값인 000-0000-00..

UI, 유저인터페이스 기본 - 3 Event trigger and Navigation [Unity]

텍스트, 이미지는 했는데 뭔가 UI에 동작이 없으면 안되잖아? 독서 어플리케이션도 아니고 그냥 보여주고 끝날건 아니잖아ㅎㅎ 그래서 알아보기로 했다. 이벤트 트리거들을 ㅎ 이벤트하면 무슨 버튼을 누르면 작동해야지?라는 생각이 먼저 든다. 그래서 버튼 알아보려고 한다. 사실 Interaction을 하기 위한 것이 UI라면 버튼이 차라리 대표적일 것 같은 느낌을 준다. 나만 그럴 수도 있고 아무튼 UI에서 버튼을 만들어보자 이렇게 항상 text가 child로 같이 딸려온다. text가 버튼의 이름이 되겠다. 버튼에는 또 Inspector창을 보면 옵션이 참 많다. Highlighted 는 마우스를 가져다 댔을 때 Pressed는 눌렀을 때 Normal은 그냥 냅뒀을 때 색도 이렇게 경우에 따라서 바꿀 수 있다..

UI, 유저인터페이스 기본 - 2 Text, Image, Responsive UI [Unity]

UI에 관한 기본적인 배경지식으로 이제 진짜 UI를 다뤄볼 것이다. 다룰 내용은..? 이 정도? 알아보자 먼저 텍스트와 스프라이트, 이미지부터 알아보자 UI 오브젝트 중 Text를 만들자. Text는 Inspector 창에서 글꼴, 크기, 스타일, 색, 배열 등 많은 것들을 바꿀 수 있다. 특히 여기서 Best Fit으로 최소 크기와 최대 크기를 정해주면 텍스트 사이즈에 따라 변화하게 만들 수 있다. -> 스크린에 따라 글자 크기를 바꿀 수 있다는 말이다. 글자에는 효과도 줄 수 있는데 대표적인 것이 Shodow, 그림자다. 다른 것도 Effect 컴포넌트에 가보면 있다. 그리고 만약 우리가 가지고 있는 Canvas 크기가 작아서 글씨가 선명하지 않고 계단현상, 안티앨리어싱 문제가 발생하면 이를 선명하게..

UI, 유저인터페이스 기본 - 1 [Unity]

인터페이스하면 그냥 사용자와 컴퓨터 간의 상호작용을 할 수 있다는 감이 온다. 이건 오랜 시간 게임에 몸을 담고 있다면 느껴지는 감이다. 자세히 알아보자 먼저 자주 쓰이는 용어를 정의해보자 UI와 HUD란 것이 있다. UI, User Interface 의 사전적의미는 사람과 컴퓨터같은 기계장치 간의 상호 작용을 하는 설계,design 를 말한다. 이 상호작용이 목적은 기계장치의 올바른 작동이나 효율적인 작동을 하기 위함이며 동시에 피드백을 줄 수 있어서 사용자의 의사 결정을 돕는다. HUD는 Head-Up Display로 게임 안에서 상태창, 점수와 같이 플레이어가 직접 건드리지는 못하지만 게임의 UI라고 볼 수 있는 것을 말한다. **우리가 점수를 얻을 수는 있어도 조작은 못하는 것처럼 그런데 UI가 ..

Handling Event, 이벤트 활용하기 - 3, 옵저버패턴, Observer Pattern [Unity]

우리가 왜 이벤트를 활용해보았을까. 바로 옵저버 패턴이란 것을 익혀보기 위함이었다. 옵저버 패턴은 어떤 때에 쓰일까?? 다수의 클래스가 하나의 이벤트에 대해 무엇인가 해야할 때 쓰인다. 이전 글에서 플레이어가 죽거나, 적이 죽을 때처럼 많은 곳에서 참조할 때?? 그정도? 알아보자 옵저버 패턴은 이런 식으로 진행된다. 하지만 모든 Observer마다 Notify를 하긴 귀찮기에 인터페이스를 이용하기도 한다. 이번에는 목숨이 다 소모되어서 게임이 끝났을 때를 가정해보자 게임 상에 남은 Enemy와 아이템은 없어지고 점수는 0으로 초기화되고 GAME OVER 문구가 떠야한다. 여기서 옵저버 패턴을 한 번 써보자. 그럼 인터페이스 만들어보자 이제는 Subject에 Private으로 Observer 리스트 만들고..

728x90
반응형