您的位置:首页 > 移动开发 > Unity3D

unity视频笔记——ngui-菜单开发

2016-03-13 15:42 459 查看
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();
    }
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: