TextComponent

텍스트를 화면에 출력합니다. UITransformComponent와 함께 사용하는 것을 권장합니다.

# Properties

[{"index":"TextAlignmentType Alignment","0":"텍스트를 정렬하는 방식입니다."}]

[{"index":"boolean AllowAutomaticTranslation (MakerOnly)","0":"Text 프로퍼티 값의 자동 번역 여부를 설정합니다."}]

[{"index":"boolean BestFit","0":"폰트 크기를 영역 크기에 맞게 조절합니다."}]

[{"index":"boolean Bold","0":"굵은 텍스트 사용 여부를 설정합니다."}]

[{"index":"float ConstraintX","0":"제한할 최대 너비를 설정합니다. Sizefit이 true인 경우 동작합니다."}]

[{"index":"float ConstraintY","0":"제한할 최대 높이를 설정합니다. Sizefit이 true인 경우 동작합니다."}]

[{"index":"boolean DropShadow","0":"텍스트의 그림자 출력 여부를 설정합니다."}]

[{"index":"float DropShadowAngle","0":"그림자의 각도를 설정합니다."}]

[{"index":"Color DropShadowColor","0":"그림자의 색상입니다."}]

[{"index":"float DropShadowDistance","0":"텍스트와 그림자 사이의 거리입니다."}]

[{"index":"boolean EnableProfanityFilter (MakerOnly)","0":"Text 프로퍼티에 금칙어 필터링 적용 여부를 설정합니다."}]

[{"index":"FontType Font","0":"글꼴 종류입니다."}]

[{"index":"Color FontColor","0":"텍스트를 렌더링하는 데 사용할 색상입니다."}]

[{"index":"int32 FontSize","0":"글꼴 크기입니다."}]

[{"index":"boolean IgnoreMapLayerCheck (Sync)","0":"SortingLayer에 Map Layer 이름을 지정했을 때 자동 치환을 수행하지 않습니다."}]

[{"index":"boolean IsLocalizationKey (MakerOnly)","0":"true로 설정하면 LocaleDataSet에서 현재 언어 설정에 맞는 텍스트를 찾아와 표시합니다. 이때 Text 프로퍼티 값을 Key로 사용합니다. Text 프로퍼티의 실제 값은 변경되지 않습니다."}]

[{"index":"boolean IsRichText","0":"리치 텍스트 사용 여부를 설정합니다"}]

[{"index":"float LineSpacing","0":"행간 너비를 조절합니다."}]

[{"index":"int32 MaxSize","0":"최대 Font 크기를 결정합니다."}]

[{"index":"int32 MinSize","0":"최소 Font 크기를 결정합니다."}]

[{"index":"int32 OrderInLayer (Sync)","0":"같은 Layer 내의 우선순위를 결정합니다. 수가 클수록 앞에 보입니다."}]

[{"index":"Color OutlineColor","0":"텍스트의 외곽선의 색상입니다."}]

[{"index":"Vector2 OutlineDistance (Deprecated) (HideFromInspector)","0":"더는 사용하지 않는 프로퍼티입니다. OutlineWidth를 활용하세요."}]

[{"index":"float OutlineWidth","0":"텍스트 외곽선의 너비를 설정합니다."}]

[{"index":"OverflowType Overflow","0":"텍스트가 가로 영역을 넘어가는 경우에 대한 처리 방식을 설정합니다."}]

[{"index":"boolean OverrideSorting (Sync) (ReadOnly)","0":"SortingLayer 및 OrderInLayer 값을 임의로 설정할지 여부를 결정합니다."}]

[{"index":"RectOffset Padding","0":"텍스트 영역의 여백을 설정합니다."}]

[{"index":"boolean SizeFit","0":"텍스트에 맞도록 크기를 변경합니다."}]

[{"index":"string SortingLayer (Sync)","0":"2개 이상의 엔티티가 겹쳤을 때 Sorting Layer에 따라 보이는 우선순위가 결정됩니다."}]

[{"index":"string Text","0":"보여질 내용입니다."}]

[{"index":"boolean UseConstraintX","0":"ConstraintX 값을 사용해 너비를 제한할 수 있도록 설정합니다."}]

[{"index":"boolean UseConstraintY","0":"ConstraintY 값을 사용해 높이를 제한할 수 있도록 설정합니다."}]

[{"index":"boolean UseNBSP","0":"문자열이 어떻게 개행될지 설정합니다. true로 설정할 경우 문자 단위로 개행해 문자가 줄 끝에 닿으면 바로 개행합니다. false로 설정할 경우 단어 단위로 개행해 단어가 잘리지 않도록 합니다."}]

[{"index":"boolean UseOutLine","0":"외곽선 효과를 사용합니다."}]

##### inherited from Component:

[{"index":"boolean Enable (Sync)","0":"컴포넌트 활성화 여부를 확인합니다."}]

[{"index":"boolean EnableInHierarchy (ReadOnly) (HideFromInspector)","0":"계층 구조상에서 이 컴포넌트가 Enable 상태인지를 반환합니다. Enable이 true일지라도 엔티티의 Enable이 false라면 false를 반환합니다."}]

[{"index":"Entity Entity (ReadOnly)","0":"이 컴포넌트를 소유한 엔티티입니다."}]

# Methods

[{"index":"string GetLocalizedText() (ClientOnly)","0":"IsLocalizationKey의 값이 true인 경우 LocaleDataSet에서 현재 언어 설정에 맞는 텍스트를 찾아 반환합니다. 이때 Text 프로퍼티 값을 Key로 사용합니다. IsLocalizationKey의 값이 false인 경우 Text 프로퍼티 값을 반환합니다."}]

[{"index":"float GetPreferredHeight(string preferredText, float width) (ClientOnly) (Yield)","0":"고정된 너비의 공간에 출력되는 텍스트 영역의 높이를 가져옵니다."}]

[{"index":"float GetPreferredWidth(string preferredText) (ClientOnly) (Yield)","0":"입력된 텍스트 영역의 너비를 가져옵니다."}]

##### inherited from Component:

[{"index":"boolean IsClient()","0":"현재 실행 환경이 클라이언트인지 아닌지의 여부를 반환합니다."}]

[{"index":"boolean IsServer()","0":"현재 실행 환경이 서버인지 아닌지의 여부를 반환합니다."}]

# Events

[{"index":"OrderInLayerChangedEvent","0":"Component의 OrderInLayer가 변경되었을 때 발생하는 이벤트입니다."}]

[{"index":"SortingLayerChangedEvent","0":"컴포넌트의 SortingLayer가 변경되었을 때 발생하는 이벤트입니다."}]

# Examples

텍스트를 한 글자씩 출력하는 예제입니다.
    
    
    @Component
    script TypewriterDialogue extends Component
        property number TimerID = 0
        property number MessageLength = 0
        property number MessageIdx = 0
        property string RawMessage = ""
    
        @ExecSpace("ClientOnly")
        method void OnBeginPlay()
        self.Entity.Parent.Enable = true
    
        self.InputMessage = "안녕하세요. MSW에 오신 것을 환영합니다."
    
        local textComponent = self.Entity.TextComponent
        if not textComponent then
        	return
        end
    
        textComponent.Bold = true
        textComponent.Alignment = TextAlignmentType.UpperLeft
        textComponent.FontColor = Color.white
        textComponent.UseOutLine = true
        textComponent.OutlineColor = Color.black
        textComponent.FontSize = 50
    
        self:ShowDialogueOverTime(self.InputMessage, 0.1)
        -- min val is 0.1
        end
    
        method void ShowDialogueOverTime(string rawMessage, number interval)
        if interval <= 0 then
        	interval = 0.1
        end
    
        self.MessageIdx = 0
        self.RawMessage = rawMessage
        self.MessageLength = (utf8.len(rawMessage))
    
        local UpdateMessage = function()
        	if self.MessageIdx < self.MessageLength then
        		self.MessageIdx = self.MessageIdx + 1
        		local currentString = _UtilLogic:SubString(self.RawMessage, 1, self.MessageIdx)
    
        		if _UtilLogic:IsNilorEmptyString(currentString) == false then
        			self.Entity.TextComponent.Text =  currentString
        		end
        	else
        		self.Entity.TextComponent.Text =  ""
        		self:RestartDialogue()
        	end
        end
    
        self.TimerID = _TimerService:SetTimerRepeat(UpdateMessage, interval)
        end
    
        method void CancelDialogue()
        _TimerService:ClearTimer(self.TimerID)
        end
    
        method void RestartDialogue()
        self.MessageIdx = 0
        end
    end
    

# SeeAlso

  * UtilLogic
  * Entity
  * TimerService
  * [기본 UI 컴포넌트](/docs?postId=744)
  * [로컬라이징의 이해](/docs?postId=951)
  * [자동 번역](/docs?postId=1072)