1.开始界面
可以创建一个invisible widget来作为容器,存放一些相关的子控件。
2.按钮添加声音,添加文字描述和打字机效果
右键sprite - attach - play sound script
然后设置audio clip即可。
pitch代表播放的速度(默认1),volume代表声音大小(1最大)
press按下,release释放(即使在按钮区域外释放也会触发),click要在按钮区域内释放才触发。
添加一个Label,再添加一个脚本typewriter effect 打字机效果。
chars per second设置每秒显示的文字数
注意:文字的最后一个字符没有显示,是ngui的bug么?
3.选项界面
可以将按钮拖到prefabs文件夹,变成prefab,可以把prefab拖到ngui的prefab toolbar去。
添加ngui的colored slider滚动条,会根据百分比变化颜色。
它有个UISlider colors来控制百分比的颜色。
4.popuplist下拉列表
添加sprite,attach box collider, attach popup list。
options:所有的选项(换行分)
default:默认
position:在上方或下方弹,默认自动
再添加一个label来显示当前选中的,然后在UI Popup List脚本的OnValueChange事件中notfiy label,method UILabel/SetCurrentSelection
background 背景图片
highlight 高亮图片
font 选项的字体
padding是设置字体内边距的
5.checkbox单选框
添加sprite,attach box collider,attach toggle script
在它下面再添加一个sprite来表示勾选,然后将它拖到toggle script的state trans里的sprite去。
transition 表示状态过度:smooth平衡,instant立即
starting state勾选,表示默认为选中状态
6.设计选项面板
添加simple popup list,但发现中文选项没显示,因为默认字体不支持中文,所以需要改popuplist的font,和他下面label的font。
7.脚本控制控件
ngui脚本会有OnValueChange事件可通知脚本,所以在脚本里添加相关回调函数来更新。
public enum GameGrade {
EASY,
NORMAL,
DIFFICULT,
}
public enum ControlType {
KEYBOARD,
TOUCH,
MOUSE,
}
public class GameSetting : MonoBehaviour {
public float volume = 1;
public GameGrade grade = GameGrade.NORMAL;
public ControlType controlType = ControlType.KEYBOARD;
public bool isFullscreen = true;
public void OnVolumeChanged() {
print("OnVolumeChanged");
volume = UIProgressBar.current.value;
}
public void OnGameGradeChanged() {
print("OnGameGradeChanged:" + UIPopupList.current.value);
switch (UIPopupList.current.value) {
case "简单":
grade = GameGrade.EASY;
break;
case "一般":
grade = GameGrade.NORMAL;
break;
case "困难":
grade = GameGrade.DIFFICULT;
break;
}
}
public void OnControlTypeChanged() {
print("OnControlTypeChanged:" + UIPopupList.current.value);
switch (UIPopupList.current.value) {
case "键盘":
controlType = ControlType.KEYBOARD;
break;
case "触摸":
controlType = ControlType.TOUCH;
break;
case "鼠标":
controlType = ControlType.MOUSE;
break;
}
}
public void OnIsFullscreenChanged() {
print("OnIsFullscreenChanged:" + UIToggle.current.value);
isFullscreen = UIToggle.current.value;
}
}
7.界面切换
在脚本里定义tween变量:
public TweenPosition tweenStart;
public TweenPosition tweenOption;
设置的时候,将包含Tween的gameObject拖过去即可。
然后在按钮响应里播放:
public void OnBtnOption() {
print("OnBtnOption");
tweenStart.PlayForward();
tweenOption.PlayForward();
}
public void OnBtnSettingOk() {
print("OnBtnSettingOk");
tweenStart.PlayReverse();
tweenOption.PlayReverse();
}