ããŒã1.ã¯ããã«ã ã¯ã©ã¹ãäœæããããããã£ãè¿œå ããŸãã Blueprintã䜿çšããC ++ã¯ã©ã¹æ¡åŒµãããŒã2.ã²ãŒã ãã¬ã€ã®ã¯ã©ã¹ã æ§é ã Unrealã®ãªãã¬ã¯ã·ã§ã³ã ãªããžã§ã¯ã/ã¢ã¯ã¿ãŒã€ãã¬ãŒã¿ã ã¡ã¢ãªãããŒãžã£ãšã¬ããŒãžã³ã¬ã¯ã¿ãããŒã3.ã¯ã©ã¹åã®ãã¬ãã£ãã¯ã¹ã æŽæ°åã ã³ã³ããã®çš®é¡ã ã³ã³ããã€ãã¬ãŒã¿ã For-eachã«ãŒããããã·ã¥é¢æ°ã
ããŒã4. Unityéçºè
åãã®Unreal Engine 4ã
ããŒã5 ...
èè
ããïŒå€ã®å§ãŸãã¯ãããžã§ã¯ãã«ãšã£ãŠæãããšãå€æããããã翻蚳ã®å®è¡ã¯é·ãé延æãããŸãããããã®åŸã¯éããªããŸãã
ãã®èšäºã¯ãUE4ããã¥ã¡ã³ãã®äžéšã®ç¿»èš³ã®ç¶ãã§ãã
ãã®ãªã³ã¯ãã¯ãªãã¯ãããš ãå
ã®èšäºãèŠã€ããããšãã§ããŸãã
ãŸã ãäŒãã§ããŠããããã§ãã 次ã®ã»ã¯ã·ã§ã³ã§ã¯ãã²ãŒã ãã¬ã€ã¯ã©ã¹ã®éå±€ã«ã€ããŠåŠç¿ããŸãã åºæ¬ãããã¯ããå§ããŠãããããäºãã«ã©ã®ããã«é¢é£ããŠãããã«ã€ããŠè©±ããŸãã ãŸããUEãç¶æ¿ãšæ§æã䜿çšããŠã«ã¹ã¿ã ã²ãŒã ãã¬ã€æ©èœãäœæããæ¹æ³ã«ã€ããŠãåŠç¿ããŸãã
ã²ãŒã ãã¬ã€ã¯ã©ã¹ïŒãªããžã§ã¯ããã¢ã¯ã¿ãŒãããã³ã³ã³ããŒãã³ã
ã»ãšãã©ã®å Žåã4ã€ã®äž»èŠãªã²ãŒã ãã¬ã€ã¯ã©ã¹ãå±éãããŸãã ãããã¯ã
UObjectãAActorãUActorComponent ãããã³
UStructã§ãã 次ã«ãããããã«ã€ããŠè©³çŽ°ã«èª¬æããã ãããã®ã¯ã©ã¹ãæ¡åŒµããªãã¿ã€ããäœæã§ããŸããããšã³ãžã³ã®çµã¿èŸŒã¿æ©èœã®ã»ãšãã©ã䜿çšããããšã¯ã§ããŸããã ååãšããŠã
UObjectéå±€ã®å€éšã§äœæãããã¯ã©ã¹ïŒ
UObjectã®æ·±ãã®ç¶æ¿è
ã§ã¯ãªãïŒã¯ããµãŒãããŒãã£ã©ã€ãã©ãªã®çµ±åããªãã¬ãŒãã£ã³ã°ã·ã¹ãã æ©èœã®ã©ãããŒãªã©ã®ç®çã§ååšããŸãã
ã¢ã³ãªã¢ã«ãªããžã§ã¯ãïŒUObjectïŒ
UEã®åºæ¬ãŠãããã¯
UObjectã¯ã©ã¹ã§ãã ãã®ã¯ã©ã¹ã¯ã
UClassã¯ã©ã¹ãšãšãã«ããšã³ãžã³ã®æãéèŠãªåºæ¬æ©èœãæäŸããŸãã
- ããããã£ãšã¡ãœããã®åæ
- ããããã£ã®ã·ãªã¢ã«å
- ã¬ããŒãžã³ã¬ã¯ã¿ãŒ
- ååã§UObjectãæ€çŽ¢
- ããããã£ã®å€ãèšå®ãã
- ããããã£ãšã¡ãœããã®ãããã¯ãŒã¯ã¢ãŒããµããŒã
UObjectããç¶æ¿ãããåã¯ã©ã¹ã«ã¯ã
ãã®ããã«äœæããã
UClassã·ã³ã°ã«ãã³ãå«ãŸããŠããŸãã ãã®ã¯ã©ã¹ã«ã¯ãã¯ã©ã¹ã€ã³ã¹ã¿ã³ã¹ã«é¢ãããã¹ãŠã®ã¡ã¿ããŒã¿ãå«ãŸããŸãã
UObjectãš
UClassã®æ©èœã¯ãïŒå
±åã§ïŒã©ã€ããµã€ã¯ã«äžã«ã²ãŒã ãã¬ã€ãªããžã§ã¯ããè¡ããã¹ãŠã®äžæ žãæããŠããŸãã
UClassãš
UObjectã®éãã¯ã
UClassãUObjectã€ã³ã¹ã¿ã³ã¹ãã©ã®ããã«èŠããããã·ãªã¢ã©ã€ãºããããã¯ãŒãã³ã°ãªã©ã«äœ¿çšã§ããããããã£ãæ£ç¢ºã«èšè¿°ãããã®ãšããŠèããã®ãæåã§ãã åºæ¬çã«ãã²ãŒã ãã¬ã€ã®éçºã¯
UObjectããçŽæ¥ç¶æ¿ããããšã§ã¯ãªããã¯ã©ã¹
AActorããã³
UActorComponentsããç¶æ¿ããããš
ã§ã ã
UClass / UObjectã®åäœã®è©³çŽ°ãç¥ãå¿
èŠã¯ãããŸããã ãããããããã®ååšã«é¢ããç¥èã¯æçšã§ãã
俳åª
AActorã¯ã©ã¹ã¯ãã²ãŒã ãã¬ã€ã®äžéšã§ãããªããžã§ã¯ããè¡šããŸãã ãã®ã¯ã©ã¹ã®ã€ã³ã¹ã¿ã³ã¹ã¯ãèšèšè
ã«ãã£ãŠã¬ãã«ã«é
眮ãããããå®è¡æã«äœæãããŸãïŒã²ãŒã ãã¬ã€ã·ã¹ãã ã䜿çšïŒã ã¬ãã«ã«é
眮ããããã¹ãŠã®ãªããžã§ã¯ãã¯ããã®ã¯ã©ã¹ã®åå«ã§ãã ããšãã°ã
AStaticMeshActorãACameraActorãããã³
APointLightã§ãã AActorã¯UObjectãç¶æ¿ã
ãŸããã€ãŸããåã®ã»ã¯ã·ã§ã³ã«ãªã¹ããããæšæºé¢æ°ã䜿çšããŸãã
AActorã¯ãã²ãŒã ã³ãŒãïŒC ++ãŸãã¯ãã«ãŒããªã³ãïŒãŸãã¯æšæºã®ã¬ããŒãžã³ã¬ã¯ã·ã§ã³ã¡ã«ããºã ïŒã¡ã¢ãªããã¬ãã«ãã¢ã³ããŒãããå ŽåïŒã䜿çšããŠ
ç Žæ£ã§ããŸãã ã²ãŒã ãªããžã§ã¯ãã®é«ã¬ãã«ã®åäœãæäŸãããããã¯ãŒã¯ã¢ãŒãã®ã¬ããªã±ãŒã·ã§ã³ãæäŸããåºæ¬çãªã¿ã€ãã§ããããŸãã ã¬ããªã±ãŒã·ã§ã³äžïŒãã«ããŠãŒã¶ãŒã¢ãŒãïŒã
AActorã¯ããããã¯ãŒã¯ã¢ãŒãã®æäœããµããŒãããããã«å¿
èŠãª
UActorComponentã«ã€ããŠã®æ
å ±ãžã®ã¢ã¯ã»ã¹ãæäŸããŸãã
AActorã«ã¯ç¬èªã®åäœïŒç¶æ¿ã«ç¹åïŒããããŸãããããã«ããããã¯
UActorComponentséå±€ã®ã³ã³ããã§ãïŒã³ã³ããžã·ã§ã³ã«ç¹åïŒã ããã¯ã
AActorã®RootComponentã®ã¡ã³ããŒã䜿çšããŠå®è¡ã§ããŸã
ã ããã«ã¯1ã€ã®
UActorComponentãå«ãŸãããã®
UActorComponentã«ã¯ä»ã®å€ãã®
ã³ã³ããŒãã³ããå«ãŸããŸãã
AActorãã¬ãã«ã«é
眮ããåã«ãå°ãªããšã
AActorã®äœçœ®ãå転ãããã³ã¹ã±ãŒã«ãä¿åãã
USceneComponentãå«ãŸããŠããå¿
èŠããããŸã
ãAActorã¯ã
AActorã®ã©ã€ããµã€ã¯ã«å
šäœã§
çºçããããã€ãã®ã€ãã³ããžã®ã¢ã¯ã»ã¹ãæäŸããŸã
ã 以äžã«ãããã®ããã€ãã®çããªã¹ãã瀺ããŸãã
Beginplay | ãªããžã§ã¯ããã²ãŒã ã«å
¥ããšãã«1ååŒã³åºãããŸãã |
ãã | åãã¬ãŒã ã¯ããã®ãã¬ãŒã äžã«ã³ãŒããå®è¡ããããã«åŒã³åºãããŸãã |
ãšã³ããã¬ã€ | ãªããžã§ã¯ããã²ãŒã ãé¢ãããšãã«åŒã³åºãããŸãã |
AActorã¯ã©ã¹ã®ãã詳现ãªç 究ã«ã€ããŠã¯ã
ãªã³ã¯ããã©ãããšãã§ããŸãã
ã©ã€ããµã€ã¯ã«
åã®ã»ã¯ã·ã§ã³ã§ã¯ã
AActorã®ã©ã€ããµã€ã¯ã«ã®ãããã¯ã«ã€ããŠå°ã觊ããŸãã
ã ã¬ãã«ã«é
眮ããã
ã¢ã¯ã¿ãŒã®å Žåãã©ã€ããµã€ã¯ã«ã¯æ¬¡ã®ããã«æ³åã§ããŸã-
ã¢ã¯ã¿ãŒã®ããŒããšååšã®éå§ãããã³ãã®åŸã®ç Žå£ïŒã¬ãã«ã®ã¢ã³ããŒãæïŒã å®è¡æã®äœæãšç Žæ£ã®ããã»ã¹ãèŠãŠã¿ãŸãããã
AActorã®äœæã¯ãéåžžã®ãªããžã§ã¯ãã®äœæãããå°ãè€éã§ãã ããã¯ã
AActorãããŸããŸãªã·ã¹ãã ïŒå®è¡æïŒ-ç©çãšã³ãžã³ããã¬ãŒã ããšã«åä¿¡ããæ
å ±ã管çãããããŒãžã£ãŒãªã©ã«ãã£ãŠç»é²ãããå¿
èŠãããããã«çºçããŸãã ãããã£ãŠããªããžã§ã¯ããäœæããã«ã¯ãã¡ãœãã
UWorld :: SpawnActorïŒïŒããããŸãã å¿
èŠãª
ã¢ã¯ã¿ãŒãæ£åžžã«äœæãããåŸã
BeginPlayïŒïŒã¡ãœããã
åŒã³åºãããç¶ããŠ
TickïŒïŒã¡ãœãããïŒæ¬¡ã®ãã¬ãŒã ã§ïŒ
åŒã³åºãããŸãã
å¿
èŠãªæéã«ããã£ãŠ
ã¢ã¯ã¿ãååšããŠããå Žåã
DestroyïŒïŒã¡ãœãããåŒã³åºãããšã§
ã¢ã¯ã¿ãŒãç Žæ£ã§ããŸã
ã ãã®å Žåã
EndPlayïŒïŒã¡ãœãããåŒã³åºãããŸãããã®ã¡ãœããã§ã¯ããªããžã§ã¯ããç Žæ£ããããšãã«å®è¡ãããå¿
èŠãªã³ãŒããèšè¿°ã§ããŸãã
ã¢ã¯ã¿ãŒã®ã©ã€ããå¶åŸ¡ããå¥ã®ãªãã·ã§ã³ã¯ã
LifeSpanãã£ãŒã«ã
ïŒã©ã€ãã¿ã€ã ïŒã䜿çšããããš
ã§ãã ãã®å€ã¯ãã³ã³ã¹ãã©ã¯ã¿ãŒã§ïŒãŸãã¯åŸã§å®è¡æã«ïŒèšå®ã§ããŸãã æå®ãããæéãçµéãããšã
Destroyã¡ãœãããèªåçã«åŒã³åºãããŸãã
ãªã³ã¯ãã¯ãªãã¯ãããšã
Actor'ovã®äœæã«é¢ãã詳现ã
ã芧ããã ã ãŸããUActorComponent
UActorComponentsã«ã¯ç¬èªã®åäœããããååãšããŠãã¡ãã·ã¥ãããŒãã£ã¯ã«ã·ã¹ãã ã®è¡šç€ºãã«ã¡ã©ã®æäœãç©ççãªçžäºäœçšãªã©ãããŸããŸãª
AActorsã«å
±éã®æ©èœãæ
ããŸãã ã²ãŒã ã§ã®åäœã®é«ã¬ãã«ããžãã¯ãæäŸãã
AActorsãšã¯ç°ãªãã
UActorComponentsã¯éåžžãé«ã¬ãã«ãªããžã§ã¯ãããµããŒãããããã«å¿
èŠãªåã
ã®ã¿ã¹ã¯ãå®è¡ããŸãã ã³ã³ããŒãã³ãã¯ä»ã®ã³ã³ããŒãã³ãã®åã§ããå ŽåããããŸãã ãããã¯1ã€ã®èŠªã³ã³ããŒãã³ããŸãã¯
ã¢ã¯ã¿ãŒã«ã®ã¿ã¢ã¿ããã§ããŸãããã³ã³ããŒãã³ãèªäœã«ã¯å€ãã®åã³ã³ããŒãã³ããå«ããããšãã§ããŸãã ãã®é¢ä¿ã¯ãã³ã³ããŒãã³ãã®ããªãŒãšããŠæ³åã§ããŸãã åã³ã³ããŒãã³ãã«ã¯
ã芪ã³ã³ããŒãã³ããŸãã¯
ã¢ã¯ã¿ãŒã« çžå¯Ÿçãªäœçœ®ãå転ãããã³ã¹ã±ãŒã«ãããããšã«æ³šæããŠãã ãã
ãã¢ã¯ã¿ãŒãšã³ã³ããŒãã³ãã䜿çšããããã®å€ãã®ãªãã·ã§ã³ããã
ãŸãã ã¢ã¯ã¿ãŒãšã³ã³ããŒãã³ãã®é¢ä¿ãæ³åããæ¹æ³ã®1ã€ã¯æ¬¡ã®ãšãã
ã§ãã ã¢ã¯ã¿ãŒ ã¯ãããã¯äœã§ããïŒããšãã質åã«çã
ãŸãã ïŒããã¯äœã§ããïŒïŒ "ãããã³è³ªåã«å¯Ÿããã³ã³ããŒãã³ã
"ããã¯äœã§ã§ããŠããŸããïŒ ïŒããã¯äœã§ã§ããŠããã®ã§ããïŒïŒÂ»- RootComponent- AActorã³ã³ããŒãã³ãããªãŒã®ãããã¬ãã«ã³ã³ããŒãã³ããå«ããªããžã§ã¯ã
- ãã£ãã¯-åãã¬ãŒã ãæŽæ°ãããã³ã³ããŒãã³ãïŒãã£ãã¯ïŒã¯ã ãããææããAActorã® TickïŒïŒã¡ãœããã®äžéšã§ãã
äžäººç§°ãã£ã©ã¯ã¿ãŒã®è§£å
åã®ã»ã¯ã·ã§ã³ã§ã¯ããã¢ã³ã¹ãã¬ãŒã·ã§ã³ã®ãªãå€ãã®åèªããããŸããã
AActorãšãã®
UActorComponentsã®é¢ä¿ã瀺ãããã«ã
First Personãã³ãã¬ãŒãã«åºã¥ããŠãããžã§ã¯ããéããããšãã«çæããã
ãã«ãŒããªã³ãã調ã¹ãŠã¿ãŸããã
ã 以äžã®å³ã¯ã
FirstPersonCharacterã¢ã¯ã¿ãŒã®ã³ã³ããŒãã³ãããªãŒã瀺ããŠããŸã
ã ããã§ã
RootComponentã¯
CapsuleComponentã§ãã CapsuleComponentã«ã¢ã¿ããããã
ã³ã³ããŒãã³ãã¯ã
ArrowComponentãMeshãããã³
FirstPersonCameraComponentã§ãã æãæ·±ããã¹ããããé ç¹ã¯
Mesh1Pã³ã³ããŒãã³ãã§
ããã®èŠªã¯
FirstPersonCameraComponentã§ãã ããã¯ãã¡ãã·ã¥ã®äœçœ®ããã®ã«ã¡ã©ã«å¯ŸããŠçžå¯Ÿçã«èæ
®ãããããšãæå³ããŸãã
ãã®ã³ã³ããŒãã³ãã®ããªãŒã®ã°ã©ãã£ãã¯ã¯ã次ã®å³ã«ç€ºãããã«ãªããŸãã3D空éã®ãã¹ãŠã®ã³ã³ããŒãã³ããèŠãããšãã§ããŸãïŒã¡ãã·ã¥ã³ã³ããŒãã³ããé€ãïŒ
ãã®ã³ã³ããŒãã³ãããªãŒã¯1ã€ã®ã¢ã¯ã¿ãŒã¯ã©ã¹ã«ã¢ã¿ãããããŸãã ã芧ã®ãšãããç¶æ¿ãšåæã®äž¡æ¹ã䜿çšããŠè€éãªã²ãŒã ãã¬ã€ãªããžã§ã¯ããäœæã§ããŸãã æ¢åã®
AActorãŸãã¯
UActorComponentãå€æŽããå Žåã¯ç¶æ¿ã䜿çšããå€ãã®
AActorã¿ã€ããåæ§ã®æ©èœãæã€å¿
èŠãããå Žåã¯æ§æã䜿çšããå¿
èŠããããŸãã
UStruct
UStructã䜿çšããã«ã¯ãç¹å®ã®ã¯ã©ã¹ããç¶æ¿ããå¿
èŠã¯ãããŸãã
ãUSTRUCTïŒïŒãã¯ãã§æ§é ãããŒã¯ããã ãã§ãæ§ç¯ããŒã«ãåºæ¬çãªäœæ¥ãè¡ããŸãã
UObjectãšã¯ç°ãªããã¬ããŒãžã³ã¬ã¯ã¿ãŒã¯
UStructã远跡ããŸãã
ã ã€ã³ã¹ã¿ã³ã¹ãåçã«äœæããå Žåãã©ã€ããµã€ã¯ã«ãåå¥ã«ç®¡çããå¿
èŠããããŸãã
UStructsã䜿çšããŠã
PODã¿ã€ãã
UEã§ã®ç·šéã
ãã«ãŒããªã³ãã«ããå¶åŸ¡
ãã·ãªã¢ã«åããããã¯ãŒãã³ã°ãªã©ã®
UObjectãªãã¬ã¯ã·ã§ã³ããµããŒãããããã«ã
ãŸã ã
ããã§ãã²ãŒã ãã¬ã€ã¯ã©ã¹ãäœæããããã®éå±€ã®åºæ¬ã«ã€ããŠèª¬æããåŸãåã³ãã¹ãéžæããŸãã ã²ãŒã ãã¬ã€ã¯ã©ã¹ã®è©³çŽ°ã調ã¹ãããè¿œå æ
å ±ãæ±ããŠãµã³ãã«ã調ã¹ãããã²ãŒã ãäœæããããã®C ++æ©èœã®ç 究ãããã«æãäžãããããããšãã§ããŸãã
ããæ·±ãæœã
ãã£ãšç¥ããããšç¢ºä¿¡ããŠããŸãã ãšã³ãžã³ã®åäœãåŒãç¶ã調æ»ããŸãã
ã¢ã³ãªã¢ã«ãªãã¬ã¯ã·ã§ã³ã·ã¹ãã
ããã°æçš¿ïŒ
Unrealã®ããããã£ã·ã¹ãã ïŒReflectionïŒã²ãŒã ãã¬ã€ã¯ã©ã¹ã¯ç¹å¥ãªããŒã¯ã¢ããã䜿çšãããããã¯ã©ã¹ã«é²ãåã«ã
Unrealããããã£ã·ã¹ãã ã®åºæ¬çãªãã®ãèŠãŠã¿ãŸããã
ã UE4ã¯ç¬èªã®ãªãã¬ã¯ã·ã§ã³ã·ã¹ãã ã䜿çšããŸããããã«ãããã¬ããŒãžã³ã¬ã¯ã¿ãŒãã·ãªã¢ã«åããããã¯ãŒã¯ã¬ããªã±ãŒã·ã§ã³ã
Blueprint / C ++çžäºéçšæ§ãªã©ã®ããŸããŸãªåçæ©èœãæäŸãããŸã
ã ãããã®æ©èœã¯ãªãã·ã§ã³ã§ããã€ãŸããèªåã®ã¿ã€ãã«å¿
èŠãªããŒã¯ã¢ãããèªåã§è¿œå ããå¿
èŠããããŸããããããªããšã
Unrealã¯ããããç¡èŠãããªãã¬ã¯ã·ã§ã³ã«å¿
èŠãªããŒã¿ãçæããŸããã 以äžã¯ãäž»èŠãªããŒã¯ã¢ããèŠçŽ ã®ç°¡åãªæŠèŠã§ãã
- UCLASSïŒïŒ-ã¯ã©ã¹ã®åå°ããŒã¿ãçæããããã«äœ¿çšãããŸãã ã¯ã©ã¹ã¯UObjectã®åå«ã§ããå¿
èŠããããŸã
- USTRUCTïŒïŒ-æ§é ã®åå°ããŒã¿ãçæããããã«äœ¿çš
- GENERATED_BODYïŒïŒ-UE4ã¯ãããããã®ã¿ã€ãçšã«äœæããããã¹ãŠã®å¿
èŠãªãã³ãã¬ãŒãã³ãŒãã§çœ®ãæããŸãã
- UPROPERTYïŒïŒ-UCLASSãŸãã¯USTRUCTã¡ã³ããŒå€æ°ã®UPROPERTYãšããŠã®äœ¿çšãæå¹ã«ããŸãã UPROPERTYã«ã¯å€ãã®çšéãããããã®ãã¯ãã䜿çšãããšãå€æ°ãè€è£œå¯èœãã·ãªã¢ã©ã€ãºå¯èœãããã³ãã«ãŒããªã³ãããã¢ã¯ã»ã¹å¯èœã«ããããšãã§ããŸãã ãŸããUObjectãžã®ãªã³ã¯ã®æ°ã远跡ããããã«ã¬ããŒãžã³ã¬ã¯ã¿ãŒã«ãã£ãŠäœ¿çšãããŸãã
- UFUNCTIONïŒïŒ-ã¯ã©ã¹ã¡ãœããUCLASSãŸãã¯USTRUCTãUFUNCTIONãšããŠäœ¿çšã§ããŸãã UFUNCTIONã䜿çšãããšãã¡ãœããããã«ãŒããªã³ãããåŒã³åºããŠRPCãªã©ãšããŠäœ¿çšã§ããŸãã
UCLASSã¯ã©ã¹å®çŸ©ã®äŸïŒ
#include "MyObject.generated.h" UCLASS(Blueprintable) class UMyObject : public UObject { GENERATED_BODY() public: MyUObject(); UPROPERTY(BlueprintReadOnly, EditAnywhere) float ExampleProperty; UFUNCTION(BlueprintCallable) void ExampleFunction(); };
ãMyClass.generated.hãããããŒãå«ãŸããŠããããšã«åããŠæ°ã¥ããã®
ã§ãã Unrealã¯ãçæããããã¹ãŠã®ããŒã¿ããã®ãã¡ã€ã«ã«åæ ããŸãã ã¿ã€ãã®å®£èšïŒã€ã³ã¯ã«ãŒããã¡ã€ã«ã®ãªã¹ãïŒã§ã¯ããã®ãã¡ã€ã«ãæåŸã«é
眮ããå¿
èŠããããŸãã
ãŸããããŒã¯ã¢ãããã¯ãã«è¿œå ã®ä¿®é£Ÿåãè¿œå ã§ããããšã«ãæ°ã¥ããããããŸããã äžèšã®ã³ãŒãã§ã¯ããã¢ã³ã¹ãã¬ãŒã·ã§ã³ã®ããã«ãæãäžè¬çãªãã®ã®ããã€ããè¿œå ãããŠããŸãã ãããã¯ãç§ãã¡ã®åãæã€ç¹å®ã®åäœãæå®ããããšãå¯èœã«ããŸãïŒ
- ãã«ãŒããªã³ãå¯èœ-ã¯ã©ã¹ã¯ãã«ãŒããªã³ãã䜿çšããŠæ¡åŒµã§ããŸãã
- BlueprintReadOnly-ããããã£ã¯Blueprintããèªã¿åãå°çšã§ãããæžã蟌ã¿äžå¯ã§ãã
- ã«ããŽãª-ãšãã£ã¿ã®è©³çŽ°ãã¥ãŒã§ããããã£ã衚瀺ãããã»ã¯ã·ã§ã³ãå®çŸ©ããŸãã çµç¹ã«äœ¿çšãããŸãã
- BlueprintCallable-é¢æ°ããã«ãŒããªã³ãããåŒã³åºãããšãã§ããŸãã
æå®åã®æ°ã¯éåžžã«å€ããããããã§ã¯ãããããªã¹ãããŸããããããã¥ã¡ã³ãã®é¢é£ã»ã¯ã·ã§ã³ãžã®ãªã³ã¯ãæäŸããŸãã
ãªããžã§ã¯ã/ã¢ã¯ã¿ãŒã€ãã¬ãŒã¿
ãªããžã§ã¯ãã€ãã¬ãŒã¿ã¯ãç¹å®ã®ã¿ã€ãã®
UObjectãšãã®ãµãã¯ã©ã¹ã®ãã¹ãŠã®ã€ã³ã¹ã¿ã³ã¹ãå埩åŠçããããã®éåžžã«äŸ¿å©ãªããŒã«ã§ãã
// UObject for (TObjectIterator<UObject> It; It; ++It) { UObject* CurrentObject = *It; UE_LOG(LogTemp, Log, TEXT("Found UObject named: %s"), *CurrentObject.GetName()); }
ããå
·äœçãªã¿ã€ãã®ã€ãã¬ãŒã¿ãŒãæäŸããããšã«ãããæ€çŽ¢ãå¶éã§ããŸãã
UObjectããç¶æ¿ããã
UMyClassãšããã¯ã©ã¹ããããšããŸã
ã 次ã®ããã«ããŠããã®ã¯ã©ã¹ã®ãã¹ãŠã®ã€ã³ã¹ã¿ã³ã¹ïŒããã³ãã®åå«ã§ãããã¹ãŠïŒãèŠã€ããããšãã§ããŸãã
for (TObjectIterator<UMyClass> It; It; ++It) {
èŠåïŒ
PIEïŒãšãã£ã¿ã§åçïŒã§ãªããžã§ã¯ãã€ãã¬ãŒã¿ã䜿çšãããšãäºæããªãçµæãçããå¯èœæ§ããããŸãã ãšãã£ã¿ãŒãããŒããããŠããéããªããžã§ã¯ãã€ãã¬ãŒã¿ãŒã¯ããšãã£ã¿ãŒã§äœ¿çšããããã®ã«å ããŠãã²ãŒã ã¯ãŒã«ãã®ã€ã³ã¹ã¿ã³ã¹çšã«äœæããããã¹ãŠã®
UObjectãè¿ããŸãã
ã¢ã¯ã¿ãŒã€ãã¬ãŒã¿ã¯ããªããžã§ã¯ãã€ãã¬ãŒã¿ãšåæ§ã«æ©èœããŸããã
AActorã®çžç¶äººã«å¯ŸããŠã®ã¿æ©èœã
ãŸãã ã¢ã¯ã¿ãŒã€ãã¬ãŒã¿ã«ã¯äžèšã®åé¡ã¯ãªããçŸåšã®ã²ãŒã ã¯ãŒã«ãã€ã³ã¹ã¿ã³ã¹ã§äœ¿çšãããŠãããªããžã§ã¯ãã®ã¿ãè¿ããŸãã
ã¢ã¯ã¿ãŒã€ãã¬ãŒã¿ã
äœæããããšã UWorldã®ã€ã³ã¹ã¿ã³ã¹ã«ãã€ã³ã¿ãŒãæž¡ãå¿
èŠããããŸã
ã APlayerControllerãªã©ã
UObjectã®å€ãã®åã¯ã©ã¹ããã®ã¡ãœãããæäŸããŸãã äžæãªå Žåã¯ã
ImplementsGetWorldã¡ãœããã®æ»ãå€ã確èªããŠãç¹å®ã®ã¯ã©ã¹
ãGetWorldã¡ãœããã
ãµããŒãããŠãããã©ããã確èªã§ããŸã
ã APlayerController* MyPC = GetMyPlayerControllerFromSomewhere(); UWorld* World = MyPC->GetWorld(); // Like object iterators, you can provide a specific class to get only objects that are // or derive from that class for (TActorIterator<AEnemy> It(World); It; ++It) { // ... }
AActorã¯
UObjectã®åå«ãªã®ã§ã
TObjectIteratorã䜿çšããŠ
AActorsã®ãã¹ãŠã®ã€ã³ã¹ã¿ã³ã¹ãæ€çŽ¢ããããšãã§ããŸã
ã ãã ãã
PIEã«ã¯æ³šæããŠ
ãã ããïŒã¡ã¢ãªãããŒãžã£ãšã¬ããŒãžã³ã¬ã¯ã¿
éåžžã
ã¢ã¯ã¿ãŒã¯ã¬ããŒãžã³ã¬ã¯ã¿ãŒã«ãã£ãŠåéãããŸããã
ã¢ã¯ã¿ãŒãäœæããåŸã
Destroyã¡ãœãããæåã§åŒã³åºãå¿
èŠããã
ãŸãã åé€ã¯ããã«ã¯è¡ãããŸããããã¬ããŒãžã³ã¬ã¯ã·ã§ã³ã®æ¬¡ã®æ®µéã§ã®ã¿è¡ãããŸãã
ãã®ã±ãŒã¹ã¯ã
UObjectããããã£ãæã€
ã¢ã¯ã¿ãŒãããå Žåã«æãäžè¬çã§ã
ã UCLASS() class AMyActor : public AActor { GENERATED_BODY() public: UPROPERTY() MyGCType* SafeObject; MyGCType* DoomedObject; AMyActor(const FObjectInitializer & ObjectInitializer) : Super(ObjectInitializer) { SafeObject = NewObject<MyGCType>(); DoomedObject = NewObject<MyGCType>(); } }; void SpawnMyActor(UWorld * World, FVector Location, FRotator Rotation) { World->SpawnActor<AMyActor>(Location, Rotation); }
ãã®é¢æ°ãåŒã³åºããšãäžçã«
ã¢ã¯ã¿ãŒã
äœæããŸãã ãã®ã³ã³ã¹ãã©ã¯ã¿ãŒã¯2ã€ã®ãªããžã§ã¯ããäœæããŸãã 1ã€ã¯
UPROPERTYãšã©ãã«ä»ããã
ããã1ã€ã¯éåžžã®ãã€ã³ã¿ãŒã§ãã
ã¢ã¯ã¿ãŒãã«ãŒããªããžã§ã¯ãã®äžéšã§ããéãã
SafeObjectã¯ãã®ã«ãŒãããã¢ã¯ã»ã¹ã§ãããããã¬ããŒãžã³ã¬ã¯ã¿ãŒã«ãã£ãŠåéãããŸããã ãã ãã
DoomedObjectã®ã©ã€ããµã€ã¯ã«ã¯ç°ãªããŸãã
UPROPERTYãšããŠããŒã¯ãããŠããªããããã¬ããŒãžã³ã¬ã¯ã¿ãŒã¯ãããžã®ãªã³ã¯ã«ã€ããŠäœãç¥ãããæçµçã«ç Žæ£ãããŸãã
UObjectãã¬ããŒãžã³ã¬ã¯ã¿ãŒã«ãã£ãŠåéããããšããã¹ãŠã®
UPROPERTYåç
§ã¯
nullptrã«ãªããŸãã ããã¯ããªããžã§ã¯ããã¬ããŒãžã³ã¬ã¯ã¿ãŒã«ãã£ãŠç Žæ£ããããã©ãããå®å
šã«ç¢ºèªããããã«è¡ãããŸãã
if (MyActor->SafeObject != nullptr) {
åè¿°ã®ããã«ã
DestroyïŒïŒã¡ãœãããåŒã³åºãããã¢ã¯ã¿ãŒã¯ãã¬ããŒãžã³ã¬ã¯ã·ã§ã³ã®æ¬¡ã®æ®µéãŸã§åé€ãããªããããããã¯éèŠãªãã€ã³ãã§ãã
IsPendingKillïŒïŒã¡ãœããã䜿çšããŠã
UObjectãåé€ãããã®ãåŸ
ã£ãŠãããã©ããã確èªã§ã
ãŸãã ã¡ãœãããtrueãè¿ãå Žåããªããžã§ã¯ãã¯ç¡å¹ã§ãããšèŠãªããã䜿çšã§ããŸããã
UStructs
åè¿°ã®ããã«ã
UStructsã¯
UObjectã®è»œéããŒãžã§ã³ã§ã
ã UStructã¯ã¬ããŒãžã³ã¬ã¯ã¿ãŒã«ãã£ãŠåéã§ããŸããã
UStructsã®åçã€ã³ã¹ã¿ã³ã¹ã䜿çšããŠããå Žåãã¹ããŒããã€ã³ã¿ãŒã䜿çšã§ããŸããããã«ã€ããŠã¯åŸã§èª¬æããŸãã
UObjectãžã®ãªã³ã¯ã§ã¯ãããŸãã
éåžžã
éUObjectã¯ãªããžã§ã¯ãåç
§ãè¿œå ããŠãã¬ããŒãžã³ã¬ã¯ã¿ãŒã«ãã£ãŠåé€ãããªãããã«ããããšãã§ããŸãã ãããè¡ãã«ã¯ããªããžã§ã¯ãã¯
FGCObjectã®ç¶æ¿ã§ããã
AddReferencedObjectsã¡ãœããããªãŒããŒã©ã€ãããå¿
èŠããããŸã
ã class FMyNormalClass : public FGCObject { public: UObject * SafeObject; FMyNormalClass(Uobject * Object) : SafeObject(Object) { } void AddReferencedObjects(FReferenceCollector & Collector) override { Collector.AddReferencedObject(SafeObject); } }
FReferenceCollectorã䜿çšããŠãå¿
èŠãª
UObjectã«ããŒããªã³ã¯ãæåã§è¿œå ã
ãŸããããã¯ãã¬ããŒãžã³ã¬ã¯ã¿ãŒã«ãã£ãŠåéãããã¹ãã§ã¯ãããŸããã ãªããžã§ã¯ããåé€ãããïŒãã¹ãã©ã¯ã¿ãèµ·åããïŒãšããªããžã§ã¯ãã«ãã£ãŠè¿œå ããããã¹ãŠã®ãªã³ã¯ãåé€ãããŸãã
PSïŒPMã®ãšã©ãŒãšäžæ£ç¢ºããä¿®æ£ããããã®ãã¹ãŠã®ææ¡ããéããã ããã