Unity中代码替换Button当前、选中的图片
2026/8/7 19:05:35 网站建设 项目流程

Unity中代码替换Button当前、选中的图片

public GameObject btn; { SpriteState spriteState = new SpriteState(); spriteState.highlightedSprite = sprite["选中图片"]; spriteState.pressedSprite = sprite["选中图片"]; spriteState.selectedSprite = sprite["选中图片"]; spriteState.disabledSprite = sprite["未选中图片"]; btn.GetComponent<Button>().spriteState = spriteState; // 强制刷新至正常状态 EventSystem.current.SetSelectedGameObject(null); // 或:强制刷新为 Normal btn.OnDeselect(null); } 嵌套方式 public class MyButton : Button { public void ForceNormal() { DoStateTransition(SelectionState.Normal, true); } }

如果你在 Button.onClick 回调内部直接执行更换图片逻辑: 触屏输入流程还没走完,状态切换时序冲突!必须延迟一帧执行

// OnClick事件函数 public void OnBtnClick() { StartCoroutine(UpdateSpriteDelay()); } IEnumerator UpdateSpriteDelay() { yield return null; // 等待当前帧输入事件循环结束 // 在这里执行更换sprite、spriteState、清空选中 Image img = btn.GetComponent<Image>(); img.sprite = source; SpriteState state = new SpriteState { highlightedSprite = high, pressedSprite = high }; Button button = btn.GetComponent<Button>(); button.spriteState = state; EventSystem.current.SetSelectedGameObject(null); }

Unity中代码替换下拉栏内容

List<Dropdown.OptionData> odList = new List<Dropdown.OptionData>(); Dropdown.OptionData od = new Dropdown.OptionData(); od.text = "123"; odList.Add(od); transform.GetComponent<Dropdown>().options = odList; transform.GetComponent<Dropdown>().value = 0;

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询