| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | |||
| 5 | 6 | 7 | 8 | 9 | 10 | 11 |
| 12 | 13 | 14 | 15 | 16 | 17 | 18 |
| 19 | 20 | 21 | 22 | 23 | 24 | 25 |
| 26 | 27 | 28 | 29 | 30 |
- 프로그래밍
- dynamic
- W3Schools
- 문제풀이
- 재귀
- Class
- loop
- 백준
- 시작해요 언리얼 2022
- w3school
- github
- String
- python
- dfs
- c++
- Algorithm
- Material
- 기초
- DP
- Tutorial
- Programming
- 파이썬
- Unity
- Unreal Engine 5
- C#
- 오류
- parameter
- guide
- UE5
- Basic
- Today
- Total
목록Unity/Project : Cursed Treasure (29)
행복한 개구리
클래스들의 기능이 다른 점이 있기때문에 공통되는 부분을 상속받아 사용하려고 한다. 따라서 모든 캐릭터들은 CharacterController스크립트를 상속받고 그 자식 스크립트에서 고유기능을 구현할 예정이다. 우선 상속에대해 잘 알지 못하므로 테스트를 해보았다. 아직 아무것도 작성하지 않은 RichGang 캐릭터의 스크립트이다. CharacterController에서는 UI를 찾아 버튼들을 할당하고 해당 버튼을 눌렀을 때 Log를 출력하도록 했다. 다만 버튼은 private과 public설정을 둘 다 두어 어떻게 설정해야 자식스크립트에서 사용할 수 있는지 확인했다. 우선 private으로 설정한 것은 자식스크립트에서 받아올 수 없었다. 하지만 부모스크립트의 기능을 사용하는데는 문제가 없었으며 privat..
서론 더보기 우선 팀프의 서버와 클라 교류 구조는 다음 그림과 같다 하나의 서버스크립트가 DontDestroy되어 시작하면 앱이 끝날때까지 파괴되지 않으며 서버스크립트와 각 씬의 씬매니저들을 싱글턴을 통해 데이터를 주고받으며 처리한다. 씬매니저는 싱글턴이 아니다. 씬의 전반적인 처리를 맡은 스크립트이다. 팀프로젝트의 씬전환이 비동기방식으로 바뀌며 구조가 꽤 바뀌었는데 이때문에 각 씬의 매니저들이 Awake하며 초기화하던 작업을 서버스크립트의 비동기 씬전환이 되면 초기화하는 방식으로 바뀌었다. 이 과정에서 캐릭터의 위치도 기존 씬매니저가 할당해주던 방식에서 '씬매니저 - 싱글턴 - 서버스크립트'로 전달하여 자신의 캐릭터를 생성해야하는 상황이었다. 구조에 맞게 서버스크립트로 캐릭터를 생성할 위치를 전달하여 ..
결론) Player.CustomProperties["Key"]형식으로 값을 받아오는 것은 OnPlayerPropertiesUpdate콜백 메서드가 실행된 이후(서버에 등록이 완료된 시점)부터 정상적으로 사용 가능하다. 포톤의 커스텀프로퍼티를 사용하는데 Set을 했는데도 자꾸 Null이 나서 커스텀프로퍼티의 사용법을 잘못 알고있는듯 하여 다시 테스트해보았다. Set을 하자마자 확인하면 Null이 나오길래 콜백메서드에도 사용을 해보고 콜백 이후에는 값이 바뀌는지도 함께 테스트해보았다. 예상했던대로 포톤의 CustomProperty는 할당을 받은 뒤 포톤서버에서 수정이 완료되어야 해당 값을 가져올 수 있던 것이다. SetTreasureHunter부분에서 Null값이 나온 이유는 서버에서 수정이 되지 않은 상태..
위 사진과 같이 선택한 클래스에만 체크표시가 뜨게하려 했다. 거기에 더해 자동화를 구현하여 후에 캐릭터볼륨이 줄거나 늘더라도 인스펙터창에서 수정할 수 있도록 구현했다. using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; public class UIClassItem : MonoBehaviour { public Transform parent; public Button btnSelect; public Image imgSelect; public void Init(GameObject model) { GameObject go = Instantiate(model, this.parent); ..
노드서버를 살짝 손 봐서 이제 원하는 유저의 데이터를 가져올 수 있게 되었다. 하지만 문제가 생겼는데, 등록되지 않은 ID를 기입할 경우 에러가 발생하여 앱이 멈추는 것이었다. 따라서 예외처리를 해주어야 했다. 간단하게 작성했다. webData가 "null"이라면 데이터를 가져올 수 없다고 출력하는 것이다. 근데 뭔가 이상하지 않은가? null도 아니고 문자열 "null"이라니 말이다. 로그를 찍어보며 확인한 결과, Node에서 null을 반환하는 값을 Json형식으로 가져오기에 string타입이 되어버린 것 같다. 따라서 webData가 string타입의 "null"이 아닐 때 데이터를 연동할 수 있도록 했다. 이제 잘 불러온다. Post, Delete, Update만 구현하면 데이터연동은 이제 끝이다.
Unity와 Node서버를 간단히 연동을 해 볼것이다. Node서버와 DB연동 구현은 여기를 확인하자. Unity에는 UnityWebRequest라는 웹과 데이터를 주고받을 수 있게 해주는 클래스가 존재한다. 웹 리퀘스터를 코루틴으로 이용한다. => 데이터를 불러오기 전에 유니티에서 처리해버릴 수도 있으므로 데이터를 가져오며 웹과 연결될 때까지 기다리다가 결과가 나왔다면 에러처리를 해준다. 연결이 되었다면 해당 웹의 데이터를 JSON형식으로 가져올 수 있다. 해당 데이터를 역직렬화 하기 위해서 데이터 클래스를 만들어준 뒤 데이터들의 타입을 선언해주었다. 그리고 역직렬화를 시킨 뒤 해당 데이터들을 UI에 할당해준다. 나는 해당 기능을 버튼으로 사용했다. 버튼을 누르면 내가 지정한 url의 데이터를 받아오는..