묻고 답해요
169만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
Segment와 Span의 차이
강의를 보던 중 Segment나 Span 같은 것들이 나오던데 이 둘의 차이점은 뭔가요 ?
-
해결됨[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
파트별 학습순서
안녕하세요, 학습순서에 대해서 질문드리려고 합니다.파트 3을 완강했고,게임서버4, 디비5, 웹서버6까지 강의를 구매해놓았습니다.저는 컴퓨터공학을 전공했지만 파트4의 내용들이 꽤 어려운 것 같아서, 파트4->파트6순으로 듣는게 맞는것인지 아니면 6->4 순으로 듣는것이 좀더 좋은지, 혹은 아예 독립적인 내용인지 여쭤보려 글 남깁니다.전부 다 수강한다는 전제하에 파트 별 학습순서를 추천해주실 수 있을까요:?감사합니다!
-
미해결C# 프로그래밍 기초
IEnumerable 강의 따라하는 중 질문합니다.
using System;using System.Collections;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;namespace Exam11_1{class Exam11_1{public void Run(){int[] intArray = new int[] { 1, 2, 3, 4, 5, 6, 7, 8, 9 };IEnumerator enumerator = intArray.GetEnumerator();for (int i = 0; i < intArray.Length; i++) Console.WriteLine(intArray[i]);}}}도저히 아무리 봐도 저는 왜 아무것도 안 나오는지 모르겠습니다.ㅠㅠ
-
미해결밑바닥부터 시작하는 왕초보 유니티 2D 게임제작
섹션2: 충돌처리
다음과 같이 레이어 설정을 했는데도 왜 충돌시 사라지는 걸까요? 1.Project Settings 각각 오브젝트 레이어 설정
-
미해결밑바닥부터 시작하는 왕초보 유니티 2D 게임제작
low resolution aspect ratios 체크박스 비활성화
low resolution aspect ratios 체크박스가 비활성화되어 해제할 수가 없습니다. 어떻게 해야 하나요?유니티 2022.3.1f1 버전 사용중입니다.
-
미해결밑바닥부터 시작하는 왕초보 유니티 2D 게임제작
섹션2: 충돌처리
Square 오브젝트에 ColCheck1함수(print 충돌/접촉/분리)와 ColCheck2 함수(상대방 오브젝트를 사라지게함)를 Inspector창에 같이 넣었을 때, ColCheck1함수를 체크 해제 한다고 해도 ColCheck2 함수가 실행되지 않는 이유를 알 수 있을까요?꼭, ColCheck1함수를 Inspector창에서 remove 해야만 ColCheck2 함수가 실행되더라고요!혹시 이것도 충돌 스크립트의 비활성화 문제와 같이 RigidBody 때문인걸까요?
-
미해결밑바닥부터 시작하는 왕초보 유니티 2D 게임제작
섹션2: 에너미공격
다음 코드에서 IEnumerator Shoot(float delta){ while(true){ GameObject bul = Instantiate(prefab,transform.position,transform.rotation); Destroy(bul,3); float delay = Random.Range(1f,delta); yield return new WaitForSeconds(delay); } } Instantiate(prefab,transform.position,transform.rotation);이 부분의 현재 위치와 현재 방향은 프리팹의 현재 위치인가요 아니면 이 스크립트를 적용한 오브젝트의 현재 위치인가요?저는 오브젝트(에너미)에서 프리팹(총알)이 발사되어야하기 때문에 후자로 생각했습니다.
-
미해결C# 프로그래밍 기초
메서드 Override1
09:58 이 부분에서 저는 Student가 아닌 Human이 나오는데 원인을 잘 모르겠습니다.ㅠㅠ
-
미해결밑바닥부터 시작하는 왕초보 유니티 2D 게임제작
섹션2: 에너미이동
랜덤하게 에너미이동을 진행할 때, speed를 높이면 씬뷰에서 카메라 범위를 벗어나게 되어서 기존 코드에 다음 코드를 추가하였습니다. 그런데도 씬뷰를 벗어나게 되더라고요. 업데이트 부분에서 현재 위치의 x,y가 주어진 범위를 벗어나면 코루트를 시작하는 함수를 호출하여 다시 목표 방향을 설정한건데 왜 벗어나는 걸까요?if(transform.position.x < (-hs.x)){ StartCoroutine(ChangeDir(3f)); } if(transform.position.x > (hs.x)){ StartCoroutine(ChangeDir(3f)); } if(transform.position.y < (-hs.y)){ StartCoroutine(ChangeDir(3f)); } if(transform.position.y > (hs.y)){ StartCoroutine(ChangeDir(3f)); }using System.Collections; using System.Collections.Generic; using UnityEngine; public class EnemyMove1 : MonoBehaviour { public float speed = 3; Vector2 hs; //half screen: 원점 초기화 Vector2 dir; //direction: 원점 초기화 // Start is called before the first frame update void Start() { hs.x = Camera.main.orthographicSize; //카메라 위쪽에서 아래쪽 바라보는 가로의 길이 hs.y = Camera.main.aspect * hs.x; //가로세로 비율 * 가로 길이 = 세로 길이 StartCoroutine(ChangeDir(3f)); } // Update is called once per frame void Update() { Vector2 delta = dir * speed * Time.deltaTime; transform.Translate(delta); //자동으로 z가 0으로 됨. if(transform.position.x < (-hs.x)){ StartCoroutine(ChangeDir(3f)); } if(transform.position.x > (hs.x)){ StartCoroutine(ChangeDir(3f)); } if(transform.position.y < (-hs.y)){ StartCoroutine(ChangeDir(3f)); } if(transform.position.y > (hs.x)){ StartCoroutine(ChangeDir(3f)); } } IEnumerator ChangeDir(float delta){ Vector2 goal; while(true){ goal.x = Random.Range(-hs.x,hs.x); //전체 가로 길이 goal.y = Random.Range(-hs.y,hs.y); //전체 세로 길이 dir = goal - (Vector2) transform.position; //이동방향 = 목표지점 - 현재위치(Vector3) dir.Normalize(); float delay = Random.Range(1f,delta); yield return new WaitForSeconds(delta); } } }
-
미해결밑바닥부터 시작하는 왕초보 유니티 2D 게임제작
섹션2: 에너미 이동2
void Update() { Vector2 delta = dir * speed * Time.deltaTime; }이 부분에서 왜 dir을 곱하는 지 이해가 되지 않습니다!그 전에는 초당 얼만큼 가기 위해 speed를 곱했는데 dir은 여기서 무엇을 뜻하는 걸까요?
-
미해결밑바닥부터 시작하는 왕초보 유니티 2D 게임제작
섹션2: 서브루틴
질문1. 코루틴은 코루틴이 대기하는 동안 Start()의 다른 함수나 Update() 함수가 진행되는 건가요?예를들어 밑에 코드에서 cortDT1이 Start()에서 시작하고, 1초 기다리는 동안 Start()의 그 밑에 있는 함수가 실행되는 건가요? 그러면 Update()는 언제 실행되는 건가요? 실행순서가 궁금합니다!public class Cort3 : MonoBehaviour { Coroutine cortDT1; Coroutine cortDT2; // Start is called before the first frame update void Start() { cortDT1 = StartCoroutine(DelayTime(1)); cortDT2 = StartCoroutine(DelayTime(2)); } // Update is called once per frame void Update() { if(Input.GetKeyDown("space")){ StopAllCoroutines(); } } IEnumerator DelayTime(float time){ while(true){ yield return new WaitForSeconds(time); //메인루틴(update함수)으로 양도권 양보 print(time + "초 만큼 경과"); } } }
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진
++i. i++에대한 간단한 질문
안녕하세요 항상 수업 잘 듣고 있습니다.다름이아니라 어셈블리 코드로 보면 ++i가 i++보다 아주 약간의 리소스가 덜든다고 배워물론 아주 미묘한 차이겠지만 필요한 상황이 아니면 늘 ++i를 쓰려는 습관을 들려고하고있습니다.근데 선생님 코드는 for문을 돌리든 뭘할때 필요한 상황이 아니면 항상 i++로 코드를 작성하시던데 혹시 어떠한 사유가 있는건지 하여 질문드립니다...
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
교재관련
안녕하세요. 게임서버와 관련해서 C#으로 설정되는 교과서가 있을까요? 해외 원서도 좋습니다. 시중에는 C++로 기술된 교재밖에 없어서 강의 병행하기에는 애로사항이 있습니다.
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part7: MMO 컨텐츠 구현 (Unity + C# 서버 연동 기초)
JobQueue 질문이있습니다
main에서 TickRoom함수 내부에서 timer를 이용해서 room.Update를 해주고room.Update에서는 Flush를 해줍니다.근데 Flush를 보면 싱글쓰레드처럼 따로 lock을 걸지않고 실행되고 있습니다.만약에 timer.Interval에 설정한 시간이 지났는데 flush가 다 안끝나서 다른 쓰레드가 flush로 들어오면 멀티쓰레드 환경이 되서 오류가 발생할 수도 있을 것 같은데이 문제는 현재 코드에서 예외처리를 안해준거죠?https://stackoverflow.com/questions/37747650/do-timers-continue-if-function-didnt-finish선생님께 찾아보고 질문한다는 성의를 보이기 위해서.... ㅎ..ㅎ
-
해결됨[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part1: C# 기초 프로그래밍 입문
오버라이딩의 정확한 용도를 잘 모르겠습니다!
다형성에 대해 설명하실 때 부모 클래스의 메소드에 virtual, 자식 클래스의 메소드에 override를 사용하라고 알려주셨는데, 이걸 쓸 때와 안쓸 때의 차이가 무엇인지 잘 모르겠습니다.해당 코드에서 부모 메소드와 이름이 같아 경고가 발생하긴 하지만, 오버라이딩을 했을 때와 실행 결과는 동일했습니다. 오버라이딩을 하는 것과 안하는 것의 명확한 차이점이 있을까요?
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part7: MMO 컨텐츠 구현 (Unity + C# 서버 연동 기초)
3d 이동 및 회전 구현하다가 질문이 생겼습니다(에러질문X)
(위에 사진은 3d 방향 및 이동 동기화를 성공해서, 뿌듯해서 같이 올려요 ㅎ..ㅎ) 멀티환경에서 3D이동 및 회전을 동기화를 구현할 때, 이전 위치와 현재 위치의 Vector3.magnitude의 차이가 0.1이 나면 이동패킷을 보내줄수있도록 설계를 해서 구현을 했습니다.혹시 0.1f 차이마다 패킷을 계속 보내는 것도 패킷을 너무 많이 보내는 편인가요? (유저 수는 10명정도가 같은 room에 있도록 만들예정입니다)항상 감사합니다! 강의를 들으면서 조금씩 바꿔보는데 정말 뿌듯하네요 하하하하하 강의가 너무 유익해요^^
-
미해결밑바닥부터 시작하는 왕초보 유니티 2D 게임제작
섹션1 유니티기초: 사용자 오브젝트 제어2
vec = Vector3.zero;이 부분을 Update()에 하지 않으면, 키를 누르고 있지 않아도 계속 이동하더라고요.그 이유가 무엇인지 알 수 있을까요?
-
해결됨[라이브 멘토링] 유니티 뱀파이어 서바이벌 장르 모작
안녕하세요. 7월 예정강의에 대해 질문이 있습니다.
유니티 & 웹서버(키우기 게임 + 웹서버) 강의가 7월 예정으로 들었는데 항상 강의 전달 말쯤에소식이 들렸는데 이번엔 아직 소식이 없어서 질문드립니다!관련해서 예정이 있으신건가요?
-
해결됨한 장의 CheatSheet로 살펴보는 C#
visual studio code 설치 문제
안녕하세요, 설치하는 데 문제가 발생해 질문 남깁니다. .net 5.0 버전은 사용이 종료되어 7.0 버전을 다운 받았습니다. 다운 받은 프로그램은 첫 번째 사진에 표시한 2가지 입니다. 이후 강의 내용대로 프로그램을 실행하였으나, powershell과 visual studio 폴더 열기 모두 해당 오류 코드가 뜨면서 진행이 되지 않습니다. 이 경우에는 어떻게 해야 하는 건가요?
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part1: C# 기초 프로그래밍 입문
값형식 배열의 요소에 참조값을 넣는 방법이 있을까요?
안녕하세요.우선 질문의 취지는 다음과 같습니다.값형식의 배열요소에 필드변수를 직접 할당하는데 참조형식으로 할당하는 방법이 있나요? 문득 궁금해서 여쭤봅니다.