public override void OnInspectorGUI() { base.OnInspectorGUI(); GUILayout.Space(8f); if (!EditorApplication.isPlaying && GUILayout.Button("Apply to changed message", GUILayout.Height(25f))) { UnstableText unstableText = target as UnstableText; int messageLength = unstableText.Message.Length; Transform unstTransform = unstableText.transform; #region Summary /*================================================================================= * If amount of unstableChar is more than messageLength, removal unstableChar at the last. * 만약 불안정문자의 수가 메시지의 길이보다 많다면, 제일 뒤에있는 불안정문자를 제거한다. *=================================================================================*/ #endregion while (messageLength < unstTransform.childCount) { Undo.DestroyObjectImmediate(unstTransform.GetChild(unstTransform.childCount - 1).gameObject); } #region Summary /*================================================================================= * Rearrange unstableChar based on length of changed message and change the each unstableChar by changed message. * 변경된 메시지에따라 불안정문자를 재배치하고, 각 불안정문자들이 나타내는 글자를 변경한다. *=================================================================================*/ #endregion for (int i = 0; i < messageLength; i++) { if (i >= unstTransform.childCount) { Unst.RegisterCharObject(i, unstableText.Message[i], unstableText.GetTextInfo) .transform.parent = unstTransform; } Undo.RecordObject(unstTransform.GetChild(i), unstableText.Message); unstTransform.GetChild(i).SetLetterSpace(messageLength, unstableText.LetterSpace, i); if (unstTransform.GetChild(i).TryGetComponent(out Text text)) { Undo.RecordObject(text, "Apply to changed text"); text.text = unstableText.Message[i].ToString(); } } } }
private void Create() { UnstableText unstableText = Unst.RegisterTextObject(mName, mCanvas, mPosition); UnstCInfo unstCInfo = new UnstCInfo(mColor, mFontStyle, mFont, new UnstableObject(mWaitFrame, mRotation, mVibration, mUnstable), mFontSize); unstableText.Setting(mMessage, mLetterSpacing, 0f); unstableText.Setting(unstCInfo); for (int i = 0; i < mMessage.Length; i++) { UnstableObject createChar = Unst.RegisterCharObject(i, mMessage[i], unstCInfo); createChar.transform.parent = unstableText.transform; createChar.transform.SetLetterSpace(mMessage.Length, mLetterSpacing, i); } }