这是编辑器的屏幕截图:
这是构建屏幕截图:
如您所见,当我在编辑器中运行时,会显示stat名称,但在构建时,它不会显示在应用程序中。可能是什么原因?
以下是屏幕快照中工具提示的脚本。
using System.Text;
using UnityEngine.UI;
using CharacterStats;
using UnityEngine;
public class StatTooltip : MonoBehaviour
{
[SerializeField] Text StatNameText;
[SerializeField] Text StatModifierLabelText;
[SerializeField] Text StatModifiersText;
private StringBuilder sb = new StringBuilder();
public void ShowTooltip(CharacterStat stat, string statName)
{
StatNameText.text = GetStatTopText(stat, statName);
StatModifiersText.text = GetStatModifiersText(stat);
gameObject.SetActive(true);
}
public void HideTooltip()
{
gameObject.SetActive(false);
}
private string GetStatTopText(CharacterStat stat, string statName)
{
sb.Length = 0;
sb.Append(statName);
sb.Append(" ");
sb.Append(stat.Value);
sb.Append(" (");
sb.Append(stat.BaseValue);
if (stat.Value > stat.BaseValue)
sb.Append("+");
sb.Append(stat.Value - stat.BaseValue);
sb.Append(")");
return sb.ToString();
}
private string GetStatModifiersText(CharacterStat stat)
{
sb.Length = 0;
foreach (StatModifier mod in stat.StatModifiers)
{
if (sb.Length > 0)
{
sb.AppendLine();
}
if (mod.Value > 0)
sb.Append("+");
sb.Append(mod.Value);
EquippableItem item = mod.Source as EquippableItem;
if(item != null)
{
sb.Append(" ");
sb.Append(item.ItemName);
}
else
{
Debug.LogError("Modifier is not an EquippableItem");
}
}
return sb.ToString();
}
}
statName在编辑器中正确显示,但在构建中没有正确显示。
using CharacterStats;
using UnityEngine;
using UnityEngine.EventSystems;
using UnityEngine.UI;
public class StatDisplay : MonoBehaviour, IPointerEnterHandler, IPointerExitHandler
{
private CharacterStat _stat;
public CharacterStat Stat
{
get { return _stat; }
set
{
_stat = value;
UpdateStatValue();
}
}
private string _name;
public string Name
{
get { return _name; }
set
{
_name = value;
nameText.text = _name;
}
}
[SerializeField] Text nameText;
[SerializeField] Text valueText;
[SerializeField] StatTooltip tooltip;
private void OnValidate()
{
Text[] texts = GetComponentsInChildren<Text>();
nameText = texts[0];
valueText = texts[1];
if (tooltip == null)
tooltip = FindObjectOfType<StatTooltip>();
}
public void OnPointerEnter(PointerEventData eventData)
{
tooltip.ShowTooltip(Stat, Name);
}
public void OnPointerExit(PointerEventData eventData)
{
tooltip.HideTooltip();
}
public void UpdateStatValue()
{
valueText.text = _stat.Value.ToString();
}
}
答案 0 :(得分:-1)
尝试将“画布缩放器”上的“ UI缩放模式”设置为“按屏幕尺寸缩放”!
编辑:这不太可能是错误,但我看不到屏幕截图上的设置,如果您还没有的话,也许值得一试
答案 1 :(得分:-1)
由于您使用OnValidate
来初始化tooltip
而导致问题。据我所知,OnValidate
用于检查在编辑器中更改的值。因此,它不适用于您的构建。您应该使用Awake
进行初始化。