UGUI使用,NGUI需要稍微修改一点
1.按钮音效脚本
//=====================================================
// - FileName: SoundButtonTool.cs
// - Author: Autumn
// - CreateTime: 2019/05/28 10:51:42
// - Email: 543761701@qq.com
// - Description:
// - (C) Copyright 2019, webeye,Inc.
// - All Rights Reserved.
//======================================================
using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using Qarth;
namespace GameWish.Game
{
public enum ButtonClickSound
{
Normal,
Close,
}
[RequireComponent(typeof(Button))]
public class SoundButtonTool : MonoBehaviour
{
public ButtonClickSound clickSound = ButtonClickSound.Normal;
void ClickSound()
{
switch (clickSound)
{
case ButtonClickSound.Normal:
AudioMgr.S.PlaySound(GameSound.EFFECT_CLICK_BTN);
break;
case ButtonClickSound.Close:
AudioMgr.S.PlaySound(GameSound.EFFECT_CLOSE_BTN);
break;
}
}
private void Awake()
{
Button btn = GetComponent<Button>();
if (btn != null)
{
btn.onClick.AddListener(ClickSound);
}
}
}
}
2.Editor工具类
//=====================================================
// - FileName: AddButtonClickSound.cs
// - Author: Autumn
// - CreateTime: 2019/05/28 10:59:23
// - Email: 543761701@qq.com
// - Description:
// - (C) Copyright 2019, webeye,Inc.
// - All Rights Reserved.
//======================================================
using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using Qarth;
using UnityEditor;
using UnityEngine.EventSystems;
namespace GameWish.Game
{
public class AddButtonClickSound : ScriptableObject
{
[MenuItem("Tools/ButtonAudio/AddButtonSoundInScene")]
static void AddSoundForButton()
{
GetAllSelectGo((child)=>
{
if (child.GetComponent<Button>() != null)
{
Log.i("{0} 按钮添加音效{1}!", child.name, child.GetComponent<SoundButtonTool>() == null ? "成功" : "失败(已经添加过,建议先clearAll)");
child.AddMissingComponent<SoundButtonTool>();
if (child.name.Contains("Close") || child.name.Contains("close") || child.name.Contains("Back") || child.name.Contains("back"))
{
child.GetComponent<SoundButtonTool>().clickSound = ButtonClickSound.Close;
}
}
});
//GameObject[] go;
//go = FindObjectsOfType(typeof(GameObject)) as GameObject[];
//foreach (GameObject child in go)
//{
// if (child.GetComponent<Button>() != null)
// {
// Log.i("{0} 按钮添加音效{1}!", child.name, child.GetComponent<SoundButtonTool>() == null ? "成功" : "失败(已经添加过,建议先clearAll)");
// child.AddMissingComponent<SoundButtonTool>();
// if (child.name.Contains("Close") || child.name.Contains("close") || child.name.Contains("Back") || child.name.Contains("back"))
// {
// child.GetComponent<SoundButtonTool>().clickSound = ButtonClickSound.Close;
// }
// }
//}
}
[MenuItem("Tools/ButtonAudio/ClearAllButtonSoundInScene")]
static void DeleteSoundForButton()
{
GetAllSelectGo((child) =>
{
if (child.GetComponent<Button>() != null)
{
if (child.GetComponent<SoundButtonTool>() != null)
{
DestroyImmediate(child.GetComponent<SoundButtonTool>());
Log.i("{0} 按钮移除音效成功!", child.name);
}
}
});
//GameObject[] go;
//go = FindObjectsOfType(typeof(GameObject)) as GameObject[];
//foreach (GameObject child in go)
//{
// if (child.GetComponent<SoundButtonTool>() != null)
// {
// DestroyImmediate(child.GetComponent<SoundButtonTool>());
// Log.i("{0} 按钮移除音效成功!", child.name);
// }
//}
}
static void GetAllSelectGo(Action<GameObject> handle)
{
GameObject[] go = Selection.gameObjects;
foreach (GameObject child in go)
{
Log.i("parent_{0}",child.name);
child.IterateGameObject(handle);
}
}
}
}
里面用到一些框架的功能,其实可以用你们自己代替 比如AddMissingComponent,Log.i其实就是Debug.Log,AudioMgr这些用自己的方法替代就好了。多余的引用自行删除即可。