扩展文本组件时设置默认文本颜色
Set default text color when extending Text component
Unity 的文本组件 323232FF
默认设置为颜色。当我扩展文本组件时,不再设置该颜色(它是白色)。
¿扩展组件时如何设置默认文本颜色?
using UnityEngine;
using UnityEngine.UI;
[AddComponentMenu("UI/CodeText", 10)]
public class CodeText : Text
{
void Awake() {
Game.Instance.trackMe();
}
}
Unity的Text组件源码:
我不会覆盖看起来正在设置颜色的 "GetGenerationSettings" :S
这里需要考虑两点:
当您从一个 GameObject
中删除 re-add Text
组件时,其初始颜色变为白色。白色是 Graphic
中的默认值,Text
继承自该值。
这是因为调用层次结构 UI/Text 上下文菜单不仅仅是简单地添加一个 Text
组件,它还应用了一个默认主题。
除非您能准确地发现源代码中的层次结构菜单做了什么,否则您可以执行以下操作来设置默认属性:
using UnityEngine;
using UnityEngine.UI;
[AddComponentMenu("UI/MyText", 10)]
public class MyText : Text
{
protected override void Awake()
{
color = GUI.skin.textField.normal.textColor; // or whatever
}
}
在我看来,在不深入研究 Text 代码的情况下,您的 class 并未调用 Text 的构造函数。即使您没有定义构造函数,您的 class 默认情况下也是这样。
public class CodeText : Text
{
public CodeText() {
}
void Awake() {
Game.Instance.trackMe();
}
}
您可能需要做的是让构造函数调用 Text 的构造函数。
public class CodeText : Text
{
public CodeText() : base() {
}
void Awake() {
Game.Instance.trackMe();
}
}
Unity 的文本组件 323232FF
默认设置为颜色。当我扩展文本组件时,不再设置该颜色(它是白色)。
¿扩展组件时如何设置默认文本颜色?
using UnityEngine;
using UnityEngine.UI;
[AddComponentMenu("UI/CodeText", 10)]
public class CodeText : Text
{
void Awake() {
Game.Instance.trackMe();
}
}
Unity的Text组件源码:
我不会覆盖看起来正在设置颜色的 "GetGenerationSettings" :S
这里需要考虑两点:
当您从一个
GameObject
中删除 re-addText
组件时,其初始颜色变为白色。白色是Graphic
中的默认值,Text
继承自该值。这是因为调用层次结构 UI/Text 上下文菜单不仅仅是简单地添加一个
Text
组件,它还应用了一个默认主题。
除非您能准确地发现源代码中的层次结构菜单做了什么,否则您可以执行以下操作来设置默认属性:
using UnityEngine;
using UnityEngine.UI;
[AddComponentMenu("UI/MyText", 10)]
public class MyText : Text
{
protected override void Awake()
{
color = GUI.skin.textField.normal.textColor; // or whatever
}
}
在我看来,在不深入研究 Text 代码的情况下,您的 class 并未调用 Text 的构造函数。即使您没有定义构造函数,您的 class 默认情况下也是这样。
public class CodeText : Text
{
public CodeText() {
}
void Awake() {
Game.Instance.trackMe();
}
}
您可能需要做的是让构造函数调用 Text 的构造函数。
public class CodeText : Text
{
public CodeText() : base() {
}
void Awake() {
Game.Instance.trackMe();
}
}