묻고 답해요
141만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨[켠김에 출시까지] 유니티 방치형 키우기 게임 (M1 + T2)
섹션1 - UI, Data 강의 화면 원래 안보이나요?
수강 시작했는데 섹션1 UI, Data 강의 화면이 안나오네요
-
미해결[라이브 멘토링] 유니티 뱀파이어 서바이벌 장르 모작
UI 리소스 사용문의
몬스터랑 나머지 리소스 전부 UI랑 사용해도 문제없나요 ??
-
해결됨[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진
enum을 이용한 UI자동화를 한 경우는 값이 자주 바뀌어야하면 비효율적인가요?
안녕하세요! 강사님이번 프로젝트에서 더 나아가 rpg 연습 프로젝트를 하는 도중 인벤토리 구현을 하는데 있어서 궁금한 것이 있어 질문 남깁니다.아래처럼 슬롯 UI를 구현해서 이제 Clear일때는 text,와 image를 지워주고 update에는 또 새로운 값을 대입해주거나 해야하는데 그때마다 Get~= null, Get~= stack++;이런식으로 해주어야하는건가요? 클래스 멤버변수로 Text stackText 를 하나 선언해서 Init할때 stackText = Get~ 이런식으로 받아놓고 사용하면되는걸까요?다루어야할 데이터가 늘어나면 enum형에 있는만큼 더생기니까 뭔가 바인딩하려고 enum형에 다 선언을 해놨는데 변수를 하나 더 만드는 거 같아 이런식으로 사용하는게 맞는지 모르겟습니다. 머리를 굴려서 생각해본 결과 SetInfo를 값을 변화시켜야할때마다 호출하는 방식으로 해놓긴했습니다ㅠㅠusing System.Collections; using System.Collections.Generic; using TMPro; using UI; using Unity.VisualScripting; using UnityEngine; using UnityEngine.UI; public class UI_InvenItemSlot : UI_Base { enum Images { ItemImage } enum Texts { ItemStackText } void Start() { Init(); } public override void Init() { Bind<GameObject>(typeof(Texts)); Bind<GameObject>(typeof(Images)); //클릭했을 때, 장착 바뀌기 이런 이벤트 함수 만들어서 연결 } private void OnClickSlot() { } private void ClearSlot() { // image =null //itemstacktext= null } private void UpdateStackText() { } private void SetInfo(Sprite image, int stackCnt) { GetText((int)Texts.ItemStackText).text = stackCnt.ToString(); GetImage((int)Images.ItemImage).sprite = image; } //슬롯 인덱스 // 슬롯 아이템 보유 여부 // 슬롯 접근 가능 여부 -> 다른 종류 아이템이거나 꽉찼으면 접근 X // 아이템 이미지 // 수량 텍스트 //기능 // 아이템 이미지 변경/ 보이기/ 숨기기 // 수량 텍스트 변경/보이기/숨기기 // 슬롯 접근가능 여부 변경 }
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진
inputManager 질문 있습니다
강의 내용을 보면 PlayerController에서 update함수에 캐릭터가 움직이는 로직을 직접 넣는것은 규모가 큰 게임에서는 효율이 안좋다고 하셨는데 어떤부분이 직접적으로 안좋은것이고 매니저를 따로 만들어서 작동시키는것이 어떤점이 좋은건지 조금 구체적으로 알고싶습니다. 이후강의에 resource manager도 같은 맥락으로 궁금점이 생겼는데요. resource manager같은 경우에는 진짜 유니티에서 제공하는 함수를 한번 더 박싱을 해서 쓰는것 뿐인데 왜 따로 매니저를 만드는지 궁금합니다 지금은 Camera편 강의를 보고 있다가 질문거리가 생겨서 여기에 질문 같이 올립니다. inputmanager, resource manager의 상위에 Managers라는 또 다른 매니저를 만들어서 여러가지 매니저들을 관리하는데요. 여러가지 매니저들을 따로따로 써도 될것같은데 굳이 한번 더 복잡하게 상위 매니저를 만들어서 한번에 쓰는것인지 궁금해요.
-
미해결[유니티 3D] 실전! 생존게임 만들기 - Advanced
thePlayerController의 값이 갑자기 null로 바뀌는 현상이 발생합니다
나무만 보면 공격이 되지 않는 버그가 생겨 CloseWeaponController.cs에서 Debug.Log로 확인 결과 Start()에선thePlayerController = FindObjectOfType<PlayerController>();에 의해서 값이 잘 들어가있는걸 확인했으나 TryAttack()에서는 갑자기 thePlayerController의 값이 null로 바뀌는 현상이 발생합니다.일단은 위 코드를 TryAttack() 안으로 옮기니 일단은 버그가 해결되었습니다. 혹시 원인이 무엇인지 알 수 있을까요?
-
미해결[유니티 레벨 업!] 모듈식으로 개발하는 스킬 시스템
Entity 질문 있습니다.
private Transform GetTransformSocket(Transform root, string socketName) { if (root.name == socketName) return root; foreach(Transform child in root) { var socket = GetTransformSocket(child, socketName); if (socket) return socket; } return null; } 재귀에서 child를 계속 찾는다는게 이해가 가지 않습니다.child는 그냥 변수명 아닌가요?ㅠ
-
미해결레트로의 유니티 C# 게임 프로그래밍 에센스
시네머신 FreeLook 관련
시네머신을 생성하고 시네머신 프리룩을 만들고 캐릭터를 Follow 와 Look at 에 넣었는데도 플레이를 누르면 화면이 회전하지 않고 정지해 있는데..이유를 모르겠습니다.
-
미해결유니티 머신러닝 에이전트 완전정복 (기초편)
DQN 환경 학습
DQN 환경 학습에서 conv1 레이어로 들어가는 인풋이 [32,168,3,64] 사이즈로 들어가서 에러가 나는 상황입니다. state size를 확인해보니 84가 아닌 168이 계속 인풋으로 들어오는데, 유니티 환경이 잘못된 것일까요?
-
미해결비전공자도 쉽게 시작하는 증강현실(AR)로 나만의 고양이 만들기
아이폰으로도 빌드하는 방법 알고 싶어요
강의 잘 듣고 있습니다. 그런데 제가 가지고 있는 핸드폰이 아이폰 뿐이라서 아이폰으로 실습할 수 있는 방법을 단계적으로 알수 있을까요? 빌드 부분만 틀린 것이라면 간단한 글로 방법을 설명해 주셨으면 합니다. 그부분만 잘 설명된 사이트가 있으면 알려주셨으면 합니다.
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
lock-free 관련
안녕하세요 lock 관련해서 찾아보다가 lcok-free 알고리즘을 보게 되었는데요lock-free라는게 이번 강의처럼 Queue자료구조를 이용해서 GameRoom의 Broadcast, Enter, Leave에 lock을 풀어내느걸 lock-free라고 할 수 있는건가요?만약 아니라면 즉 말 그대로 lock에서 완전히 자유로울 수 있다면 lock-free 알고리즘을 사용하지 않는 이유를 알 수 있을까요? 어떠한 한계가 있는걸까요?
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
집에서 서버 돌리기
네트워크 기초 이론 강의 8분 25초 말씀 중에 큰 규모의 게임의 서버를 돌리려면 성능이 좋은 컴퓨터를 써야 한다고 하셨는데 큰 규모가 아니라 동시 접속자 500~1000명 프리서버정도 되는 규모의 MMORPG는 집에서 무난하게 돌릴 수 있을 까요? 무리일까요?
-
미해결유니티와 C#으로 배우는 카타나제로스타일 게임만들기 (기본편)
공격후에 미끄러지는 오류
공격이펙트 마무리 강의를 마쳤는데, 공격시 바라보는 방향으로 힘이 주어져서 더 빨리 이동하는데, 딱 딱 대시하고 멈추지가않고, 스르륵 미끄러집니다. 무엇이 문제일까요?using System.Collections;using System.Collections.Generic;using System.IO;using UnityEditor;using UnityEngine;using UnityEngine.UIElements;public class Player : MonoBehaviour{ public float speed = 5; public float jumpUp = 1; public float power = 5; public Vector3 direction; //방향을 위한 Vector3형 변수 public GameObject slash; Animator pAnimator; //애니메이션 관리를 위함 Rigidbody2D pRig2D; //물리효과처리 + SpriteRenderer sp; void Start() { pAnimator = GetComponent<Animator>(); pRig2D = GetComponent<Rigidbody2D>(); direction = Vector2.zero; sp = GetComponent<SpriteRenderer>(); } void KeyInput() { direction.x = Input.GetAxisRaw("Horizontal"); if (direction.x < 0) { //left sp.flipX = true; pAnimator.SetBool("Run", true); } else if (direction.x > 0) { //right sp.flipX = false; pAnimator.SetBool("Run", true); } else if (direction.x == 0) { pAnimator.SetBool("Run", false); } if (Input.GetMouseButtonDown(0)) { pAnimator.SetTrigger("Attack"); } } void Update() { //클래스 사용 KeyInput(); Move(); if (Input.GetKeyDown(KeyCode.W))//W키 눌렀을때 { if (pAnimator.GetBool("Jump") == false) { Jump(); pAnimator.SetBool("Jump", true); } } } private void FixedUpdate() { Debug.DrawRay(pRig2D.position, Vector3.down, new Color(0, 1, 0)); RaycastHit2D rayHit = Physics2D.Raycast(pRig2D.position, Vector3.down, 1, LayerMask.GetMask("Ground")); if (pRig2D.velocity.y < 0) { if (rayHit.collider != null) { if (rayHit.distance < 0.7f) { pAnimator.SetBool("Jump", false); } } } } //움직임 함수 public void Move() { transform.position += direction speed Time.deltaTime; } public void AttSlash() { //플레이어 오른쪽 if (sp.flipX == false) { pRig2D.AddForce(Vector2.right * power, ForceMode2D.Impulse); GameObject go = Instantiate(slash, transform.position, Quaternion.identity); go.GetComponent<SpriteRenderer>().flipX = sp.flipX; } else //왼쪽 { pRig2D.AddForce(Vector2.left * power, ForceMode2D.Impulse); GameObject go = Instantiate(slash, transform.position, Quaternion.identity); go.GetComponent<SpriteRenderer>().flipX = sp.flipX; } } //점프 함수 public void Jump() { //벡터값 제로 pRig2D.velocity = Vector2.zero; //제로로 해줘야 이전에 있던 값(힘)이 사라진다? //위로 힘 가해주기 pRig2D.AddForce(new Vector2(0, jumpUp), ForceMode2D.Impulse); } }
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진
에셋 다운은 어디서하나요??
다른 질문에도 있던데 구름모양이 도대체 어디 있는건가요?? 정확한 위치를 알려주세요 어디에 구름이 있는거죠???
-
미해결[켠김에 출시까지] 유니티 방치형 키우기 게임 (M1 + T2)
JWT의 유효기간에 대해서 질문이 있습니다.
방치형 게임의 경우 JWT의 유효기간을 어떻게 설정해야하는지가 궁금합니다. 방치형 게임은 특성상 유저가 AFK를 해두는경우가 많은걸로 알고있습니다.제가 이해한바로는 게임을 오래동안 켜놓아도 JWT의 유효기간이 지나버리면 다시 재로그인을 해서 JWT를 발급받아야하는것으로 이해했습니다.유효기간을 되도록이면 짧게하는게 보안적인 부분에서 이득이라고 생각되는데 이를 해결할 방법이 있을지 혹은 적절한 유효기간이 있는지가 궁금합니다.
-
해결됨비전공자도 쉽게 시작하는 증강현실(AR)로 나만의 고양이 만들기
이미지 파일
안녕하세요 강의 듣고있는데 늑대 사진은 어디서 다운로드 받나요?
-
해결됨두고두고 써먹는 유니티 VR
섹션4 2-2 수업자료가 이상합니다.
안녕하세요! 섹션4 2-2 에 수업자료를 버튼을 눌러 다운로드 받으면 unitypakage 파일이 아니라 gz 압축 파일이 다운로드 됩니다. gz 파일의 압축을 풀면 이상한 풀더가 많이 나옵니다. 파일 확인 부탁드립니다.
-
해결됨두고두고 써먹는 유니티 VR
빌드파일 VR연결
에디터상에서는 VR이 잘 연결됩니다. 그런데 안드로이드로 빌드해서 apk로 Meta Quest Developer Hub에서 실행하면검정화면에서 꺼져버립니다.그리고 윈도우로 빌드하면 실행은 되는데 VR연결이 되지 않습니다.에디터 버전이 2022.3.29f1인데 에디터 버전 문제일까요?
-
미해결[켠김에 출시까지] 유니티 캐주얼 모바일 MMORPG (M2)
수강생은 디스코드 강좌도 참여 가능한가요?
궁금합니다!
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
SendBufferHelper를 굳이 만들어야 하는 이유가 뭔가요?
먼저 수준 낮은 질문 죄송합니다..SendBufferHelper클래스의 내용 전부를 SendBuffer클래스에 넣을 수 있을 거 같고, 넣으면 사실상 SendBufferHelper클래스는 필요 없을 거 같다는 생각을 했습니다. 제가 뭔가 빠뜨린 것이 있는지 궁금합니다. SendBufferHelper클래스의 ThreadLcoal에서 new ThreadLocal<SendBuffer>(() => { return null;}); 사용하셨는데 여기서 람다식은 생성자 인가요? 이것도 사실 필요 없다고 생각했는데 이것은 어디에 사용되나요?
-
미해결유니티(Unity)로 시작하는 게임개발: Part 3. 슈팅게임 개발
Asteroid 생성에 관련해서
안녕하세요다름이 아니라 GameManager 를 생성하여 GameManager 스크립트에 Asteroid01 을 추가해서영상에서 설명 해주신데로 코드를 작성한 후에 실행을 하면Asteroid 가 굉장히 많은 수가 랜덤으로 생성되어 나옵니다혹시 문제가 무엇일까요?