UICheckboxPrefs.cs

1,bool isChecked:false 为“初始”状态,true为“选中”;

2,bool startsChecked:true,一运行,就显示UISprite :checkSprite;

3,UISprite checkSprite:一般为“选中”状态的UI;

using UnityEngine;

using AnimationOrTween;

[AddComponentMenu("WuKk/UI/Checkbox Prefs")]

publicclass UICheckboxPrefs : MonoBehaviour

{

static public UICheckboxPrefs current;

public delegate void OnStateChange (bool state);

/// <summary>

/// Sprite that's visible when the 'isChecked' status is 'true'.

/// </summary>

public UISprite checkSprite;

/// <summary>

/// Animation to play on the checkmark sprite, if any.

/// </summary>

public Animation checkAnimation;

/// <summary>

/// Whether the checkbox starts checked.

/// </summary>

public bool startsChecked = true;

/// <summary>

/// If the checkbox is part of a radio button group, specify the root object to use that all checkboxes are parented to.

/// </summary>

public Transform radioButtonRoot;

/// <summary>

/// Can the radio button option be 'none'?

/// </summary>

public bool optionCanBeNone = false;

/// <summary>

/// Generic event receiver that will be notified when the state changes.

/// </summary>

public GameObject eventReceiver;

/// <summary>

/// Function that will be called on the event receiver when the state changes.

/// </summary>

public string functionName = "OnActivate";

/// <summary>

/// Delegate that will be called when the checkbox's state changes. Faster than using 'eventReceiver'.

/// </summary>

public OnStateChange onStateChange;

// Prior to 1.90 'option' was used to toggle the radio button group functionality

[HideInInspector][SerializeField] bool option = false;

bool mChecked = true;

bool mStarted = false;

Transform mTrans;

/// <summary>

/// Whether the checkbox is checked.

/// </summary>

public bool isChecked

{

get { return mChecked; }

set { if (radioButtonRoot == null || value || optionCanBeNone || !mStarted) Set(value); }

}

/// <summary>

/// Legacy functionality support -- set the radio button root if the 'option' value was 'true'.

/// </summary>

void Awake ()

{

mTrans = transform;

startsChecked=isPrefsSet();

if (checkSprite != null) checkSprite.alpha = startsChecked ? 1f : 0f;

if (checkSprite != null && startsChecked)

{

Color c = checkSprite.color;

c.a = mChecked ? 1f : 0f;

checkSprite.color=c;

}

if (option)

{

option = false;

if (radioButtonRoot == null) radioButtonRoot = mTrans.parent;

}

}

/// <summary>

/// Activate the initial state.

/// </summary>

void Start ()

{

if (eventReceiver == null) eventReceiver = gameObject;

mChecked = !startsChecked;

mStarted = true;

Set(startsChecked);

}

/// <summary>

/// Check or uncheck on click.

/// </summary>

void OnClick () { if (enabled) isChecked = !isChecked; }

/// <summary>

/// Fade out or fade in the checkmark and notify the target of OnChecked event.

/// </summary>

void Set (bool state)

{

if (!mStarted)

{

mChecked = state;

startsChecked = state;

if (checkSprite != null) checkSprite.alpha = state ? 1f : 0f;

}

else if (mChecked != state)

{

// Uncheck all other checkboxes

if (radioButtonRoot != null && state)

{

UICheckboxPrefs[] cbs = radioButtonRoot.GetComponentsInChildren<UICheckboxPrefs>(true);

for (int i = 0, imax = cbs.Length; i < imax; ++i)

{

UICheckboxPrefs cb = cbs[i];

if (cb != this && cb.radioButtonRoot == radioButtonRoot) cb.Set(false);

}

}

// Remember the state

mChecked = state;

// Tween the color of the checkmark

if (checkSprite != null)

{

Color c = checkSprite.color;

c.a = mChecked ? 1f : 0f;

TweenColor.Begin(checkSprite.gameObject, 0.2f, c);

}

// Notify the delegate

if (onStateChange != null) onStateChange(mChecked);

// Send out the event notification

if (eventReceiver != null && !string.IsNullOrEmpty(functionName))

{

current = this;

eventReceiver.SendMessage(functionName, mChecked, SendMessageOptions.DontRequireReceiver);

}

// Play the checkmark animation

if (checkAnimation != null)

{

ActiveAnimation.Play(checkAnimation, state ? Direction.Forward : Direction.Reverse);

}

checkboxPrefsSet(mChecked);

}

}

public  string  prefsKey="";

public  int  prefsInitInt=0;

public  int  prefsSetInt=1;

void checkboxPrefsSet(bool  isActivity){

if(isActivity)

PlayerPrefs.SetInt(prefsKey,prefsSetInt);

else

PlayerPrefs.SetInt(prefsKey,prefsInitInt);

}

bool  isPrefsSet(){

return ( PlayerPrefs.GetInt(prefsKey,prefsInitInt)==prefsInitInt ? false:true);

}

}

NGUI Checkbox与PlayerPrefs的更多相关文章

  1. 关于Unity中NGUI的Checkbox复选框、Slider滑动条和Button的6种触发回调事件的方式

    Checkbox复选框 1.创建一个NGUI背景Sprite1节点 2.打开NGUI---->Open---->Prefab Toolbar---->选择一个复选框节点,拖拽到背景节 ...

  2. NGUI的CheckBox的使用(toggle script)

    一,我们先添加一个sprite,选择sprite,右键选择attach,添加box collider, 然后右键选择attach,添加toggle script,得到如下图结果 1,但是如果你没有给U ...

  3. NGUI OnChange Event

    那些组件有OnChange? 下面这些组件都有OnChange事件,当你点击,下拉选择时,就会触发它们. NGUI中对应的组件 PopupList (下拉列表) Toggle (复选框) Input ...

  4. NGUI学习笔记汇总

    NGUI学习笔记汇总,适用于NGUI2.x,NGUI3.x 一.NGUI的直接用法 1. Attach a Collider:表示为NGUI的某些物体添加碰撞器,如果界面是用NGUI做的,只能这样添加 ...

  5. C#程序员整理的Unity 3D笔记(十五):Unity 3D UI控件至尊–NGUI

    目前,UGUI问世不过半年(其随着Unity 4.6发布问世),而市面上商用的产品,UI控件的至尊为NGUI:影响力和广度(可搜索公司招聘Unity 3D,常常能看到对NGUI关键词). NGUI虽然 ...

  6. NGUI系列教程三

    接下来我们再来看Progress Bar和Slider,对比参数我们可以发现,Progress Bar和slider的明显区别在于slider多一个Thumb选项,这里的Thumb就是我们拖动的时候点 ...

  7. NGUI 的使用教程与实例(入门)(1 )

    NGUI教程:步骤1-Scene 1.创建一个新的场景(New Scene).2.选择并删除场景里的MainCamera.3.在NGUI菜单下选择Create a New UI,会打开UI创建向导. ...

  8. Unity3d ngui基础教程

    Unity3d ngui基础教程 NGUI教程:步骤1-Scene 1.创建一个新的场景(New Scene).2.选择并删除场景里的MainCamera.3.在NGUI菜单下选择Create a N ...

  9. NGUI: Documentation

    Video Tutorials Basic Tutorial (v.2.5.0+) SD & HD atlas switching (advanced) Packed Font (advanc ...

随机推荐

  1. 利用github和git命令,将本地项目共享到服务器上

    一.步骤 1. 创建项目根目录 mkdir 文件夹名 2. 初始化文件夹 git init 3. 配置用户名和邮箱(第一次配置后,不需要再登录) git config user.name 名字 git ...

  2. ubuntu下wine操作usb串口

    呃,换成ubuntu后想玩下文曲星,貌似没有linux下的下载工具,只好用wine. 用的是ch340的usb转串口,不得不说ubuntu果然集大成,这些驱动都有了,用minicom设置设备为/dev ...

  3. eclipse No projects are found to import

    导入报:No projects are found to import 新建同名项目,然后删掉 然后:右键项目 根据需要创建资源目录: 最后复制包文件夹分别到这两个资源文件夹里:

  4. Spring AOP实现拦截转发控制

    import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import ...

  5. wine 魔兽争霸

    连接参见http://linux-wiki.cn/wiki/%E7%94%A8Wine%E8%BF%90%E8%A1%8C%E9%AD%94%E5%85%BD%E4%BA%89%E9%9C%B8III ...

  6. 关于public、private、protected、internal

    1.private修饰符 private修饰符用于设置类或类成员的訪问权限仅为所属类的内部, private也被称为私有修饰符.某些时候须要訪问私有类成员时,可通过get和set訪问器读取或改动. 2 ...

  7. 编程算法 - 和为s的两个数字 代码(C)

    和为s的两个数字 代码(C) 本文地址: http://blog.csdn.net/caroline_wendy 题目: 输入一个递增排序的数组和一个数字s, 在数组中查找两个数, 使得它们的和正好是 ...

  8. 原生js 操作类名

    添加类名: document.getElementById('navBar').getElementsByClassName('mui-tab-item')[0].classList.add('mui ...

  9. libevent2源码分析之二:初始化流程

    本文并不很详细地分析初始化的各个细节,而重点分析如何将底层操作关联到event_base的相关字段.初始化工作主要是针对event_base的.libevent2支持多种底层实现,有epoll, se ...

  10. python challenge答案参考

    Solutions to python challenge. http://garethrees.org/2007/05/07/python-challenge/ https://github.com ...