묻고 답해요
143만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결이득우의 언리얼 프로그래밍 Part1 - 언리얼 C++의 이해
오브젝트 소멸 관련해서 질문있습니다
안녕하십니까 교수님 다름이 아니고 발행-구독 패턴의 주체인 MyGameInstance의 Student 오브젝트 선언 부분에서 궁금한 점이 생겨서 질문 드립니다.25:47초 쯤에서 구문 실행시 아래의 오브젝트는 자동 소멸된다고 하셨습니다. 따라서 Outer가 필요 없다고 하셨고, outer가 필요없는 이유는 Student 객체가 주체에서 관리될 이유가 없기 때문이라고 이해했습니다. UStudent* Student1 = NewObject<UStudent>(); UStudent* Student2 = NewObject<UStudent>(); UStudent* Student3 = NewObject<UStudent>();근데 '구문 실행'시 자동 소멸이 된다는게 이해가 되지 않습니다. 구문 실행시가 아닌 해당 함수에서의 작업을 모두 마친 후 소멸하는게 아닌가요?아니면 student객체들이 엔진에 레퍼런스되지 않기 때문에 선언 후 소멸된다는 의미에서 저렇게 말씀하신걸까요? 혹시 제가 오브젝트 관련해서 잘못 이해했거나 부족한 지식이 있는거라면 지적해주신다면 정말 감사합니다.
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진
delegate 관련 질문 (InputManager강의 중)
안녕하세요 InputManager 강의 중 아래 내용에 대해 아래와 같이 이해하였는데요, 몇 가지 질문이 있습니다 (강조 부분) 1. 아무 키나 눌러질 경우 첫째 if 문을 넘어가 둘째 if 문에 당도 2. Player 게임오브젝트의 PlayerController에서 Start함수 부분에서 KeyAction에 +=로 OnKeyBoard()를 걸었으므로(구독했으므로) 현재 KeyAction은 != null 인 상태 (정확히 얘기하면 KeyAction = OnKeyBoard(); 인가요? -> 이게 KeyAction이 OnKeyBoard()함수의 주소를 들고있다 나중에 호출될 경우 불러낸다는 의미로 이해하면 될까요?) 3. 아무 키나 눌렀으므로 둘째 if 문 내부로 들어가 KeyAction에 걸린(구독된) OnKeyBoard()가 KeyAction.Invoke();를 통해 실행됨. 만약 PlayerController 말고 다른 Component 에서 해당 KeyAction이라는 delegate (Action이 delegate의 일종이라고 이해해서요)에 본인의 함수를 걸었을 (구독했을)경우 그 함수도 같이 실행이 되는건가요? 그럼 이 때는 KeyAction이 여러 함수의 주소를 동시에 들고있다가 동시에 호출하는 건가요? 늘 좋은 강의 잘 듣고 있습니다. 감사합니다.
-
해결됨유니티(Unity)로 시작하는 게임개발: Part 1. 컴퓨터 구조 입문
delegate는 다른 프로그램언어에도 해당되나요?
제가 코딩을 배우기 위한 처음 시작이 HTML, CSS, JavaScript 그리고 이 강의 전까지 p5.js를 공부하고 있었는데요. 변수를 선언하고 초기화하며 함수내에서 그 값들을 바꾸는 것까지는 이해했는데 함수 자체를 변수화 하는 것, 즉 delegate하는 것에 대해서는 이해가 안되었습니다. 아직 part2 강좌는 들어가기 전이지만 이 delegate라는 개념?은 다른 프로그램 언어에서도 동일하게 존재하는 것인지 궁금합니다. p5.js 제공하는 예제를 아래 붙여 보겠습니다. let cnv; let d; let g; function setup() { cnv = createCanvas(400, 400); cnv.mousePressed(changeGray); d = 10; g = 100; } function draw() { background(g); ellipse(width/2, height/2, d, d); } function mousePressed() { d = d + 10; } function changeGray() { g = random(0, 255); } 이 코딩을 실행하면 canvas 밖에서 마우스를 클릭하면 원의 지름만 늘어나고 canvas안에서 클릭하면 원의 지름과 canvas의 배경색까지 같이 바뀝니다. 즉 cnv라는 변수를 선언한 후에 changeGray의 함수를 통해 canvas의 배경색을, 그것을 canvas 안에서 클릭을 할때, 랜덤으로 바꾸기 위해 cnv.mousePressed(changeGray);라는 delegate를 사용했다고 이해하면 되는지요? 유니티 강좌에서 다른 언어에 대해 질문해서 죄송합니다~~