该功能是在取色器的基础上实现的,我的取色器是百度用的别人的,所以就不放了,
如果有需要的可以找我要,我发给你们。然后我会详细介绍一下我的代码,帮助大
家编写自己的功能。
编写代码前,对各个面板添加CanvasGroup这个组件
using UnityEngine;
using UnityEngine.UI;
using UnityEditor;
using System;
public class Change : MonoBehaviour {
public Button WordBtn;//弹出修改字体面板的按钮
public GameObject WordPanel;//修改字体的面板
public Button ColorBtn;//弹出修改背景颜色的按钮
public GameObject ColourPanel;//修改背景的面板
//需要修改的面板
public GameObject playLeftPanel;
public GameObject playRightPanel;
public GameObject topPanel;
public GameObject bottomPanel;
//取色器的颜色
public GameObject ColorShow;//背景所取的颜色
public GameObject WordColorShow;//字体所取的颜色
public Button WordSureBtn;//字体确认按钮
public Button WordDelBtn;//字体取消按钮
public InputField WordSize;//字体大小输入框
public Button SureBtn;//背景确认按钮
public Button DelBtn;//背景取消按钮
//为各按钮添加监听事件,自己对应
void Start ()
{
WordBtn.onClick.AddListener(onWordBtnClicked);
ColorBtn.onClick.AddListener(onColorBtnClicked);
WordSureBtn.onClick.AddListener(onWordSureBtnClicked);
WordDelBtn.onClick.AddListener(onWordDelBtnClicked);
SureBtn.onClick.AddListener(onSureBtnClicked);
DelBtn.onClick.AddListener(onDelBtnClicked);
}
//打开字体修改面板
void onWordBtnClicked()
{
WordPanel.GetComponent<CanvasGroup>().alpha = 1;
}
//打开颜色改变面板
void onColorBtnClicked()
{
ColourPanel.GetComponent<CanvasGroup>().alpha = 1;
}
//确认修改字体
void onWordSureBtnClicked()
{
Image wordcolor = GameObject.Find("WordColorShow").GetComponent<Image>();
string a = WordSize.text;
Debug.Log(a);
Transform canvas = GameObject.Find("Canvas").transform;
if (!canvas)
{
Debug.Log("NO Canvas");
return;
}
//将所有文本写入数组
Transform[] tArray = canvas.GetComponentsInChildren<Transform>();
//遍历数组,为每个文本设置字体大小和颜色
for (int i = 0; i < tArray.Length; i++)
{
Text t = tArray[i].GetComponent<Text>();
if (t)
{
Undo.RecordObject(t, t.gameObject.name);
t.color = wordcolor.color;
t.fontSize = int.Parse(a.ToString());
EditorUtility.SetDirty(t);
}
}
Debug.Log("Succed");
WordPanel.GetComponent<CanvasGroup>().alpha = 0;
}
//关闭字体设置面板
void onWordDelBtnClicked()
{
WordPanel.GetComponent<CanvasGroup>().alpha = 0;
}
//设置背景颜色
void onSureBtnClicked()
{
Image color = GameObject.Find("ColorShow").GetComponent<Image>();
Image right = GameObject.Find("playRightPanel").GetComponent<Image>();
right.color = color.color;
Image left = GameObject.Find("playLeftPanel").GetComponent<Image>();
left.color = color.color;
Image bottom = GameObject.Find("bottomPanel").GetComponent<Image>();
bottom.color = color.color;
Image top = GameObject.Find("topPanel").GetComponent<Image>();
top.color = color.color;
ColourPanel.GetComponent<CanvasGroup>().alpha = 0;
}
//关闭颜色选择面板
void onDelBtnClicked()
{
ColourPanel.GetComponent<CanvasGroup>().alpha = 0;
}
}
其他问题还有询问。