inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

묻고 답해요

173만명의 커뮤니티!! 함께 토론해봐요.

언리얼 기본 제공 태스크 UAbilityTask_WaitTargetData

미해결

이득우의 언리얼 프로그래밍 Part4 - 게임플레이 어빌리티 시스템

언리얼이 기본제공하는 태스크들이 정말 많아서 좀 둘러보다가 저희가 만든 AT_Trace랑 비슷한 "UAbilityTask_WaitTargetData"라는 게 있어서 좀 살펴봤는데요. Activate()에 있는 구현 내용이 중복되는 BeginSpawningActor() 와 FinishSpawningActor () 함수가 있는데 임의로 블루프린트에서 이 태스크를 실행해보니 Activate()가 실행이 안되고 이 두 함수가 실행되는 걸 봤습니다. 이런 식으로 그냥 실행해봤는데요. 사실 코드에선 어빌리티에서 CreateTarget()을 하고 ReadyForActivation()까지 호출해야 AT의 Activate()가 실행되는데 블루프린트에서는 이 노드 호출만으로 어떻게 AT가 실행까지 되는지도 잘 모르겠습니다. 거기에 UAbilityTask_WaitTargetData 처럼 Activate() 대신에 BeginSpawningActor()/FinishSpawningActor () 가 실행되는 이유도 알고 싶습니다.... 이 두 함수 존재의 설명은 엔진 주석에 나와있어서 어느정도 파악이 됐는데 문제는 코드에서든 블루프린트에서든 호출되는 조건을 잘 모르겠습니다...

  • unreal-engine
  • ue-blueprint
  • unreal-engine5
  • 언리얼-c++
  • gas
themoon007 댓글 1 좋아요 0 조회수 533

어빌리티 태스크의 블루프린트 핀에 Async Task는 용도가 뭔가요?

해결됨

이득우의 언리얼 프로그래밍 Part4 - 게임플레이 어빌리티 시스템

찾아보려 했는데 정보가 잘 안 나오네요... +아, 그리고 블루프린트에서는 태스크 생성과 동시에 자동으로 ReadyForActivation 까지 호출되는 건가요??? 그러고보니 이 함수가 없네요

  • unreal-engine
  • ue-blueprint
  • unreal-engine5
  • 언리얼-c++
  • gas
themoon007 댓글 1 좋아요 0 조회수 526

외부 파이썬 함수 수행하기 관련 질문 드립니다.

미해결

Airflow 마스터 클래스

안녕하세요. 좋은 강의 감사히 잘 들었습니다. 강의에서 궁금한 점이 있어서 질문 드립니다. 1) 첫 번째 질문 강의 제목 : 외부 파이썬 함수 수행하기 환경 구성 : macOS, Docker, Airflow 2.7 문의 내용 : 강의 초반에 언급한 환경변수로 설정하는 방법 상세 내용 : 강의 후반에 알려주신 내용은 방법을 이해했습니다. 다만 초반에 알려주신 항목 중 sys.path 는 명시적 구현이라 쉽게 가능했으나, 환경변수 쪽은 찾아봐도 쉽게 이해가 안 돼서 질문하게 됐습니다. 복습하면서 여러 방법을 알면 좋을 것 같아서 질문 드립니다. 2) 두 번째 질문 강의 제목 : 없음 환경 구성 : Docker 설치 시 생성하는 디렉터리 이외에 추가 디렉터리 생성 후 볼륨 마운트. 예를 들어 utils 라는 디렉터리를 생성 후 docker-compose.yaml 의 volumes 에 ${AIRFLOW_PROJ_DIR:-.}/utils:/opt/airflow/utils 를 추가 할 경우 문의 내용 : 추가로 디렉터리 생성할 경우 plugins 디렉터리 외에서 py 파일을 읽어야 하는 경우 상세 내용 : 첫 번째 질문과 유사하게 환경변수에 관한 질문일 것 같습니다. 새로운 디렉터리를 생성해서 작업할 때 경로를 인식 시켜야 하는데, sys.path 로만 하는 것은 번거로운 것 같아서 어떤 방식으로 접근을 하면 좋을지 조언을 듣고 싶습니다. 간략하게 정리하면 plugins 디렉터리 이외의 환경도 같이 사용을 하는 방법이 궁금합니다. 3) 세 번째 질문 강의 제목 : 없음 환경 구성 : 1, 2와 동일 문의 내용 : 새로운 패키지 설치 할 때 설치 방법 및 운영 관리 노하우 상세 내용 : docker compose 할 때 yaml 에 PIPADDITIONAL_REQUIREMENTS 부분에 설치할 패키지 목록을 입력해서 설치를 하고 있습니다. 이렇게 해도 되는 것 같긴한데, 나중에 더 많은 패키지를 설치하게 될 경우 좋지 않은 형태라고 생각이 들었습니다. 실제로 현업에서 업무를 하실 때 다양한 패키지를 어떤 식으로 설치 및 운영 관리 하시는지 궁금합니다. 감사합니다. 다른 강의도 기대하겠습니다.

  • python
  • 데이터-엔지니어링
  • airflow
화이팅 댓글 2 좋아요 0 조회수 527

파이썬 face-recognition 모듈 설치 오류

미해결

pip를 통해서 face-recognition 모듈을 설치하려는데 아래 사진과 같은 오류가 계속 발생합니다. pip 버전은 제일 최신 버전 파이썬 버전은 3.11.4 인터넷 보니 CMake를 설치하래서 일단 CMake 버전은 3.28.1입니다 아 dlib도 pip말고 직접 설치하래서 했더니 밑에 빨간 글자를 제외하고 위에 'subprocess.CalledProcessError' 부분과 똑같은 오류가 발생하더군요 이걸로 계속 고통받다 마지막으로 질문해봅니다 ㅠ

  • python
  • 파이썬
댓글 1 좋아요 0 조회수 419

여러 대상에게 Effect를 전달하는 방법

해결됨

이득우의 언리얼 프로그래밍 Part4 - 게임플레이 어빌리티 시스템

AttackHit어빌리티의 스킬 공격 판정 결과 함수에서 스킬 타겟 액터는 HitResult 대신 Actors 에 충돌된 액터들을 넣어서 보내주기 때문에 TargetDataHandle에 대상 액터들이 들어있을 텐데요. 이를 엔진 내부에서 사용하여 한번의 ApplyGameplayEffectSpecToTarget() 호출로 각 대상 액터들에게 모두 Effect를 적용하는 걸로 예상하고 있습니다. 그런데 ASC에서 직접 BP_ApplyGameplayEffectSpecToTarget()을 할 때는 대상 액터가 여러개라면 For문으로 직접 여러번 호출할 수 밖에 없어 보이는데, 혹시 ASC도 Effect를 한번 호출로 여러 타겟에 적용하는 함수가 있나요??

  • unreal-engine
  • ue-blueprint
  • unreal-engine5
  • 언리얼-c++
  • gas
themoon007 댓글 1 좋아요 0 조회수 345

SendGameplayEventToActor() 발동 시 ASC 동작

해결됨

이득우의 언리얼 프로그래밍 Part4 - 게임플레이 어빌리티 시스템

나름대로 제가 알아볼 수 있을 정도만 정리 중인데요. SendGameplayEventToActor()가 어빌리티랑 이벤트 델리게이트를 활성화 할 수 있던데, 만약 이 두 개가 우연히 같은 Tag를 가지고있다면 Send 함수 호출 한번으로 둘이 동시에 실행되는 건가요???

  • unreal-engine
  • ue-blueprint
  • unreal-engine5
  • 언리얼-c++
  • gas
themoon007 댓글 1 좋아요 0 조회수 384

AttributeSet 함수 정리

해결됨

이득우의 언리얼 프로그래밍 Part4 - 게임플레이 어빌리티 시스템

AttributeSet의 각 함수에 대해 의미와 동작 방식, 사용처가 조금 헷갈려서 제가 실험을 좀 해본 후에 정리한 것인데요. 여기서 틀린 정보가 있을지 혹시 알 수 있을까요... 그리고 UAbilitySystemComponent:GetGameplayAttributeValueChangeDelegate(FGameplayAttributeAttribute) 이 델리게이트 같은 경우는 PostGameplayEffectExecute() 다음에 이벤트 발생 되는 건가요??

  • unreal-engine
  • ue-blueprint
  • unreal-engine5
  • 언리얼-c++
  • gas
themoon007 댓글 1 좋아요 0 조회수 470

어빌리티 태스크에서 GetWorld() 얻어올 때 어빌리티에서 가져오는 것

해결됨

이득우의 언리얼 프로그래밍 Part4 - 게임플레이 어빌리티 시스템

바로 GetWorld() 하는 것과 Ability->GetWorld() 하는 것이 어떤 차이가 있나요? World라는 것이 자신이 생성되어 소속되어있는 레벨의 월드 데이터로만 알고있는데, 월드데이터가 오브젝트마다 다를 수가 있는 건가요?

  • unreal-engine
  • ue-blueprint
  • unreal-engine5
  • 언리얼-c++
  • gas
themoon007 댓글 1 좋아요 0 조회수 276

GAS 보조게임 모듈은 GameFeature로 만든건가요?

해결됨

이득우의 언리얼 프로그래밍 Part4 - 게임플레이 어빌리티 시스템

플러그인에 게임피처가 적용 안되어 있는 걸로 보면 직접 파트1에서 한 것처럼 수동으로 폴더와 파일을 만들어서 제작한 것 같은데요. GAS 빌드.cs 에 PrivateDependencyModuleNames에 "GameFeatures"는 왜 있는 건가요??

  • unreal-engine
  • ue-blueprint
  • unreal-engine5
  • 언리얼-c++
  • gas
themoon007 댓글 1 좋아요 0 조회수 468

VS에서 저장 안한 코드가 에디터에서 컴파일 할 때마다 사라지는 문제

해결됨

이득우의 언리얼 프로그래밍 Part4 - 게임플레이 어빌리티 시스템

에디터를 켠 상태로 vs코드를 수정하다가 저장을 안하고 그대로 에디터에서 새 클래스를 생성한다던지 하는 방식으로 에디터에서 컴파일을 실행하면, 저장안한 코드는 전부 사라지는 것 때문에 강의를 여러번 되돌려보고 디버깅 따로 해보느라 여러번 낭패를 봤는데요. 이거는 그냥 코드 수정할 때마다 저장 제때하는 것밖에 방법이 없는 건가요??? 뭔가 방지하는 방법은 없나요

  • unreal-engine
  • ue-blueprint
  • unreal-engine5
  • 언리얼-c++
  • gas
themoon007 댓글 1 좋아요 0 조회수 246

(실습) ORM 적용 - HTTP Response 처리

미해결

실전! FastAPI 입문

from typing import List from fastapi import FastAPI, Body, HTTPException, Depends from pydantic import BaseModel from sqlalchemy.orm import Session from database.orm import ToDo from database.connection import get_db from database.repository import get_todos from schema.response import ListToDoResponse, ToDoSchema app = FastAPI() @app.get("/") def heath_check_handler(): return {"ping": "pong"} todo_data = { 1: { "id": 1, "contents": "실전! FastAPI 섹션 0 수강", "is_done": True, }, 2: { "id": 2, "contents": "실전! FastAPI 섹션 1 수강", "is_done": False, }, 3: { "id": 3, "contents": "실전! FastAPI 섹션 2 수강", "is_done": False, }, } @app.get("/todos", status_code=200) def get_todos_handler( order: str | None = None, session: Session = Depends(get_db), ) -> ListToDoResponse: todos: List[ToDo] = get_todos(session=session) if order and order == "DESC": return ListToDoResponse( todos=[ToDoSchema.from_orm(todo) for todo in todos[::-1]] ) return ListToDoResponse( todos=[ToDoSchema.from_orm(todo) for todo in todos] ) @app.get("/todos/{todo_id}", status_code=200) def get_todo_handler(todo_id: int): todo = todo_data.get(todo_id) if todo: return todo raise HTTPException(status_code=404, detail="ToDo Not Found") class CreateToDoRequest(BaseModel): id: int contents: str is_done: bool @app.post("/todos", status_code=201) def create_todo_handler(request: CreateToDoRequest): todo_data[request.id] = request.dict() return todo_data[request.id] @app.patch("/todos/{todo_id}", status_code=200) def update_todo_handler( todo_id: int, is_done: bool = Body(..., embed=True) ): todo = todo_data.get(todo_id) if todo: todo["is_done"] = is_done return todo raise HTTPException(status_code=404, detail="ToDo Not Found") @app.delete("/todos/{todo_id}") def delete_todo_handler(todo_id: int): todo = todo_data.pop(todo_id, None) if todo: return raise HTTPException(status_code=404, detail="ToDo Not Found") from typing import List from pydantic import BaseModel class ToDoSchema(BaseModel): id: int contents: str is_done: bool class Config: orm_mode = True class ListToDoResponse(BaseModel): todos: List[ToDoSchema] from typing import List from sqlalchemy import select from sqlalchemy.orm import Session from database.orm import ToDo def get_todos(session: Session) -> List[ToDo]: return list(session.scalars(select(ToDo))) from sqlalchemy import create_engine from sqlalchemy.orm import sessionmaker DATABASE_URL = "mysql+pymysql://root:todos@127.0.0.1:3306/todos" engine = create_engine(DATABASE_URL, echo=True) SessionFactory = sessionmaker(autocommit=False, autoflush=False, bind=engine) def get_db(): session = SessionFactory() try: yield session finally: session.close() from sqlalchemy import Boolean, Column, Integer, String from sqlalchemy.orm import declarative_base Base = declarative_base() class ToDo(Base): __tablename__ = 'todo' id = Column(Integer, primary_key=True, index=True) contents = Column(String(256), nullable=False) is_done = Column(Boolean, nullable=False) def __repr__(self): return f"ToDo(id={self.id}, contents={self.contents}, is_done={self.is_done})" 에러가 납니다. 파이썬 콘솔 <input>:1: PydanticDeprecatedSince20: The from_orm method is deprecated; from schema.response import ToDoSchema from datagbase.orm import ToDo Traceback (most recent call last): File "C:\Program Files\JetBrains\PyCharm 2023.3.2\plugins\python\helpers\pydev\pydevconsole.py", line 364, in runcode coro = func() ^^^^^^ File "<input>", line 1, in <module> File "C:\Program Files\JetBrains\PyCharm 2023.3.2\plugins\python\helpers\pydev\_pydev_bundle\pydev_import_hook.py", line 21, in do_import module = self._system_import(name, args, *kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ModuleNotFoundError: No module named 'datagbase' from database.orm import ToDo todo = ToDo(id=100, contents="test", is_done=True) ToDoSchema.from_orm(todo) <input>:1: PydanticDeprecatedSince20: The from_orm method is deprecated; set model_config['from_attributes']=True and use model_validate instead. Deprecated in Pydantic V2.0 to be removed in V3.0. See Pydantic V2 Migration Guide at https://errors.pydantic.dev/2.5/migration/ Traceback (most recent call last): File "C:\Program Files\JetBrains\PyCharm 2023.3.2\plugins\python\helpers\pydev\pydevconsole.py", line 364, in runcode coro = func() ^^^^^^ File "<input>", line 1, in <module> File "C:\Users\manag\pyProject\todos\Lib\site-packages\typing_extensions.py", line 2499, in wrapper return arg(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^^ File "C:\Users\manag\pyProject\todos\Lib\site-packages\pydantic\main.py", line 1126, in from_orm raise PydanticUserError( pydantic.errors.PydanticUserError: You must set the config attribute from_attributes=True to use from_orm http://localhost:8000/docs#/default/get_todos_handler_todos_get 접속시 터미널 INFO: 127.0.0.1:56312 - "GET /docs HTTP/1.1" 200 OK INFO: 127.0.0.1:56312 - "GET /openapi.json HTTP/1.1" 200 OK 2024-01-23 16:06:15,108 INFO sqlalchemy.engine.Engine BEGIN (implicit) 2024-01-23 16:06:15,109 INFO sqlalchemy.engine.Engine SELECT todo.id, todo.contents, todo.is_done FROM todo 2024-01-23 16:06:15,109 INFO sqlalchemy.engine.Engine [cached since 826.5s ago] {} 2024-01-23 16:06:15,113 INFO sqlalchemy.engine.Engine ROLLBACK INFO: 127.0.0.1:56312 - "GET /todos HTTP/1.1" 500 Internal Server Error ERROR: Exception in ASGI application Traceback (most recent call last): File "C:\Users\manag\pyProject\todos\Lib\site-packages\uvicorn\protocols\http\h11_impl.py", line 404, in run_asgi result = await app( # type: ignore[func-returns-value] ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\manag\pyProject\todos\Lib\site-packages\uvicorn\middleware\proxy_headers.py", line 84, in call return await self.app(scope, receive, send) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\manag\pyProject\todos\Lib\site-packages\fastapi\applications.py", line 1054, in call await super().__call__(scope, receive, send) File "C:\Users\manag\pyProject\todos\Lib\site-packages\starlette\applications.py", line 123, in call await self.middleware_stack(scope, receive, send) File "C:\Users\manag\pyProject\todos\Lib\site-packages\starlette\middleware\errors.py", line 186, in call raise exc File "C:\Users\manag\pyProject\todos\Lib\site-packages\starlette\middleware\errors.py", line 164, in call await self.app(scope, receive, _send) File "C:\Users\manag\pyProject\todos\Lib\site-packages\starlette\middleware\exceptions.py", line 62, in call await wrap_app_handling_exceptions(self.app, conn)(scope, receive, send) File "C:\Users\manag\pyProject\todos\Lib\site-packages\starlette\_exception_handler.py", line 64, in wrapped_app raise exc File "C:\Users\manag\pyProject\todos\Lib\site-packages\starlette\_exception_handler.py", line 53, in wrapped_app await app(scope, receive, sender) File "C:\Users\manag\pyProject\todos\Lib\site-packages\starlette\routing.py", line 762, in call await self.middleware_stack(scope, receive, send) File "C:\Users\manag\pyProject\todos\Lib\site-packages\starlette\routing.py", line 782, in app await route.handle(scope, receive, send) File "C:\Users\manag\pyProject\todos\Lib\site-packages\starlette\routing.py", line 297, in handle await self.app(scope, receive, send) File "C:\Users\manag\pyProject\todos\Lib\site-packages\starlette\routing.py", line 77, in app await wrap_app_handling_exceptions(app, request)(scope, receive, send) File "C:\Users\manag\pyProject\todos\Lib\site-packages\starlette\_exception_handler.py", line 64, in wrapped_app raise exc File "C:\Users\manag\pyProject\todos\Lib\site-packages\starlette\_exception_handler.py", line 53, in wrapped_app await app(scope, receive, sender) File "C:\Users\manag\pyProject\todos\Lib\site-packages\starlette\routing.py", line 72, in app response = await func(request) ^^^^^^^^^^^^^^^^^^^ File "C:\Users\manag\pyProject\todos\Lib\site-packages\fastapi\routing.py", line 299, in app raise e File "C:\Users\manag\pyProject\todos\Lib\site-packages\fastapi\routing.py", line 294, in app raw_response = await run_endpoint_function( ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\manag\pyProject\todos\Lib\site-packages\fastapi\routing.py", line 193, in run_endpoint_function return await run_in_threadpool(dependant.call, **values) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\manag\pyProject\todos\Lib\site-packages\starlette\concurrency.py", line 40, in run_in_threadpool return await anyio.to_thread.run_sync(func, *args) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\manag\pyProject\todos\Lib\site-packages\anyio\to_thread.py", line 56, in run_sync return await get_async_backend().run_sync_in_worker_thread( ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\manag\pyProject\todos\Lib\site-packages\anyio\_backends\_asyncio.py", line 2134, in run_sync_in_worker_thread return await future ^^^^^^^^^^^^ File "C:\Users\manag\pyProject\todos\Lib\site-packages\anyio\_backends\_asyncio.py", line 851, in run result = context.run(func, *args) ^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\manag\pyProject\todos\src\main.py", line 48, in get_todos_handler todos=[ToDoSchema.from_orm(todo) for todo in todos] ^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\manag\pyProject\todos\Lib\site-packages\typing_extensions.py", line 2499, in wrapper return arg(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^^ File "C:\Users\manag\pyProject\todos\Lib\site-packages\pydantic\main.py", line 1126, in from_orm raise PydanticUserError( pydantic.errors.PydanticUserError: You must set the config attribute from_attributes=True to use from_orm

  • python
  • 리팩토링
  • orm
  • FastAPI
  • pytest
네오스카이 댓글 2 좋아요 0 조회수 1267

NotifyActorBeginOverlap 방식 충돌체크

해결됨

이득우의 언리얼 프로그래밍 Part4 - 게임플레이 어빌리티 시스템

예전에 Trigger의 오버랩 델리게이트에 직접 함수를 바인딩하여 충돌체크를 했던 방식과 사뭇 다른데요. NotifyActorBeginOverlap 은 액터가 가지고있는 모든 충돌 가능 컴포넌트를 모두 자동으로 감시하나요??

  • unreal-engine
  • ue-blueprint
  • unreal-engine5
  • 언리얼-c++
  • gas
themoon007 댓글 1 좋아요 0 조회수 383

ApplyGameplayEffectSpectToTarget()을 사용하기 전 조건

해결됨

이득우의 언리얼 프로그래밍 Part4 - 게임플레이 어빌리티 시스템

이 함수를 이용하려면 TargetDataHandle을 넣도록 되어 있는데요. 그래서 Trace 어빌리티 테스크를 통해 전달받은 데이터를 사용한 것 같습니다. 그런데 다른 방식으로 타겟을 정하거나 수동으로 ApplyGameplayEffectSpectToTarget()를 사용하려면 FGameplayAbilityTargetDataHandle을 억지로 만들어 채워야 하나요??

  • unreal-engine
  • ue-blueprint
  • unreal-engine5
  • 언리얼-c++
  • gas
themoon007 댓글 1 좋아요 0 조회수 454

플레이어에만 위젯을 넣었는데 NPC에서 HpBar가 어떻게 나오나요??

해결됨

이득우의 언리얼 프로그래밍 Part4 - 게임플레이 어빌리티 시스템

강의 따라가다가 제 화면에서는 플레이어에만 HpBar가 나오는데 강의에선 NPC에도 나와서 질문 드렸습니다. + npc에도 같은 위젯코드를 넣어봤더니 에디터를 처음 켤 때 로딩중에 위젯컴포넌트에서 InitWidget()이 실행되면서 위젯의 SetAbilitySystemComponent()를 호출하게 되는데요. 저는 SetAbilitySystemComponent()에 ensure을 놔뒀더니 이 타이밍이 빙의 전이라 어트리뷰트가 등록이 안되있는 상태라서 에러가 발생하는 것같습니다. 강의 처럼 if 로직으로 바꾸면 되긴하는데 로딩중에 위젯컴포넌트의 InitWidget()가 호출되는 이유가 무엇인가요? 월드에 npc가 배치되있긴하지만 BeginPlay()를 호출하지는 않는데 왜 InitWidget()이 호출되는지 잘 모르겠습니다. 제가 part2에서 들었던거는 액터의 BeginPlay() 이후에 호출된다고만 들었는데 다른 이유가 있나요?? 이것 때문인 것 같습니다.

  • unreal-engine
  • ue-blueprint
  • unreal-engine5
  • 언리얼-c++
  • gas
themoon007 댓글 2 좋아요 0 조회수 513

게임플레이 이펙트의 Magnitude Calculation Type을 바꿨을 때 질문입니다.

해결됨

이득우의 언리얼 프로그래밍 Part4 - 게임플레이 어빌리티 시스템

Magnitude Calculation Type을 Attribute Base로 바꿨을 때도 아래의 코드를 지우지 않았는데, 이거는 그냥 무시되는 건가요?

  • unreal-engine
  • ue-blueprint
  • unreal-engine5
  • 언리얼-c++
  • gas
themoon007 댓글 1 좋아요 0 조회수 357

ASC의 컨테이너에 추가한 타겟 액터 질문

해결됨

이득우의 언리얼 프로그래밍 Part4 - 게임플레이 어빌리티 시스템

이렇게 ASC 에 추가하고나서 OnDestroy() 될 때, 타겟 액터는 지우는데요. ASC의 컨테이너는 이와 관련해서 타겟 액터를 다시 뺀다던가 하는 처리를 안 해도 되는건가요??

  • unreal-engine
  • ue-blueprint
  • unreal-engine5
  • 언리얼-c++
  • gas
themoon007 댓글 1 좋아요 0 조회수 399

ASC->SpawnedTargetActors 에 추가된 타겟 액터에 관해서 질문있습니다.

해결됨

이득우의 언리얼 프로그래밍 Part4 - 게임플레이 어빌리티 시스템

6강의 ABAT_Trace의 FinalizeTargetActor() 함수에서, 이하와 같이 생성완료된 타겟 액터를 오너 캐릭터의 ASC의 SpawnedTargetActors에 추가했는데, Ability Task가 종료될때 SpawnedTargetActors에서 제거하지 않아도 괜찮을까요? void UABAT_Trace::FinalizeTargetActor() { UAbilitySystemComponent* ASC = AbilitySystemComponent.Get(); if (ASC) { const FTransform SpawnTransform = ASC->GetAvatarActor()->GetTransform(); SpawnedTargetActor->FinishSpawning(SpawnTransform); ASC->SpawnedTargetActors.Push(SpawnedTargetActor); SpawnedTargetActor->StartTargeting(Ability); SpawnedTargetActor->ConfirmTargeting(); } } 혹시나 삭제해야 한다면 타겟 액터 콜백 함수에서 EndTask() 의 실행 직전에 삭제하면 되는지 궁금합니다. void UABAT_Trace::OnTargetDataReadyCallback(const FGameplayAbilityTargetDataHandle& DataHandle) { if (ShouldBroadcastAbilityTaskDelegates()) { OnComplete.Broadcast(DataHandle); } // 추가한 부분 UAbilitySystemComponent* ASC = AbilitySystemComponent.Get(); if (ASC) { ASC->SpawnedTargetActors.Remove(SpawnedTargetActor); } EndTask(); }

  • unreal-engine
  • ue-blueprint
  • unreal-engine5
  • 언리얼-c++
  • gas
Kumuri 댓글 1 좋아요 0 조회수 415

SetWaitingOnAvatar() 질문

해결됨

이득우의 언리얼 프로그래밍 Part4 - 게임플레이 어빌리티 시스템

이거 주석해도 별다른 차이점을 잘 모르겠습니다. 내부에 보니, 기다리는 상태 Enum을 Avatar 기준에 둘지/User에 둘지/Game에 둘지 정하는데 정확히 무슨 차이인가요??

  • unreal-engine
  • ue-blueprint
  • unreal-engine5
  • 언리얼-c++
  • gas
themoon007 댓글 1 좋아요 0 조회수 378

SetupGASInputComponent() 함수 2군데에 작성 질문..

해결됨

이득우의 언리얼 프로그래밍 Part4 - 게임플레이 어빌리티 시스템

서버 전용 캐릭터든 클라이이언트 전용 캐릭터든 빙의 함수랑 SetupPlayerInputComponent()은 클라이언트에서는 아예 호출이 안되고 관련된 것들은 다 복제로 처리되고, 서버에서는 이 두 함수가 다 호출되면서 SetupGASInputComponent()가 중복 호출 되는 걸로 알고있는데 서버에서 중복 처리는 별로 상관 없는 건가요?

  • unreal-engine
  • ue-blueprint
  • unreal-engine5
  • 언리얼-c++
  • gas
themoon007 댓글 1 좋아요 0 조회수 407

포함 디렉터리가 UE5.1로 자동으로 안잡힐 때는 어떻게 해야 하나요?

해결됨

이득우의 언리얼 프로그래밍 Part4 - 게임플레이 어빌리티 시스템

수업자료 받고 generate 했는데 에러나서 봤더니 이곳이 자동으로 처리가 안되있는데 이거 수동으로 바꿔야 하나요?? + 이 플러그인 메세지도 있어서 봤더니 이게 Visual Integration Tool 말하는 거인지는 잘 모르겠으나, 처음엔 프로젝트가 실행도 안됐는데 Visual Integration Tool 을 엔진에 추가하고 나서는 실행은 되네요. 하지만 빨간줄은 안 없어지는것 같아요.

  • unreal-engine
  • ue-blueprint
  • unreal-engine5
  • 언리얼-c++
  • gas
themoon007 댓글 2 좋아요 0 조회수 928

인기 태그

인프런 TOP Writers

주간 인기글