테라리아 모드번역기 개발 일지: 모드의 필드
만든 모드가 모드에 간섭해서 무언가를 편집하는 여러 방법이 있습니다. 개발중인 모드는 필드를 활용해 모드에서 번역해야 할 대상들을 찾아내는데 이용했습니다.
모드 참조를 위한 필드
사용법
using Terraria.ModLoader;
using System.Collections.Generic;
(Dictionary<string, 모드요소>)
typeof(Mod)
.GetField("필드키", BindingFlags.Instance | BindingFlags.NonPublic)
.GetValue(모드);
필드키에 대응하는 요소를 모드로부터 찾아와 키와 값이 들어있는 사전형(Dictionary
)으로 가져옵니다. 각 요소는 필드키에 따라 다른 값을 가집니다.
필드키 목록
전체 필드 키의 목록은 다음과 같습니다.
translations, netID, fileHandle, loading, AsyncLoadQueue, textures, sounds, musics, fonts, effects, recipes, items, globalItems, equipTextures, prefixes, dusts, tiles, globalTiles, tileEntities, walls, globalWalls, projectiles, globalProjectiles, npcs, globalNPCs, players, mountDatas, buffs, globalBuffs, worlds, ugBgStyles, surfaceBgStyles, globalBgStyles, waterStyles, waterfallStyles, globalRecipes
알아낸 몇 가지 필드키와 대응하는 타입은 다음과 같습니다.
- (
ModTranslation
) "translations": 국제화를 지원하는 텍스트 - (
ModItem
) "items": 모드가 정의한 아이템 - (
ModProjectile
) "projectiles": 모드가 정의한 발사체 - (
ModBuff
) "buffs": 모드가 정의한 버프와 디버프 - (
ModNPC
) "npcs": 모드가 정의한 마을 NPC, 몬스터, 보스 등 - (
ModPrefix
) "prefixes": 모드가 정의한 아이템 접두어
방어구 세트효과를 찾아야 할 텐데 어디에 있는지 잘 모르겠군요.
색인 요소 나열하기
찾은 요소를 루프로 하나하나 나열하면서 값을 변경하거나 값을 가져올 수 있습니다.
using System.Reflection;
using System.Collections.Generic;
using Terraria;
using Terraria.ModLoader;
using Terraria.Localization;
foreach (
KeyValuePair<string, ModItem> Item in
(Dictionary<string, ModItem>)
typeof(Mod)
.GetField("items", BindingFlags.Instance | BindingFlags.NonPublic)
.GetValue(targetMod)
)
{
Item.Value; // 아이템(요소)
Item.Key; // 아이템 이름(내부)
}
모드에서 새로 정의한 아이템 목록을 가져오는 예시를 만들었습니다. 이 방법으로 칼라미티나 토륨 등과 같이 소스와 리소스가 잠긴 모드에 접근하여 값을 얻거나 수정할 수 있습니다.
'종료한 프로젝트 > 테라리아MKT(종료)' 카테고리의 다른 글
[tMod Korean Translator V0.3.0] 번역자 가이드 (0) | 2020.01.07 |
---|---|
테라리아 통합 모드 번역: tMod Korean Translator V 0.2.0 (0) | 2020.01.06 |
[tModLoader] 모드개발: 테라리아 기본 번역 가져오기 (0) | 2020.01.02 |
C#/tModLoader: 모드 목록 불러오기 (0) | 2020.01.01 |
테라리아 모드: Cheat Sheet Korean (한국어판) (0) | 2019.12.31 |
댓글