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. 【业务自动化】iTop,全面支持ITIL流程的一款ITSM工具

    iTop产品针对的主要应用场景为:内部IT支持.IT外包管理.数据中心运维管理和企业IT资产管理.常青管理从绿象认证产品中选取了iTop作为主要推荐产品,本类别的绿象认证产品还包括:OTRS和RT3等 ...

  2. Kafka查看偏移量报错:WARN WARNING: ConsumerOffsetChecker is deprecated and will be dropped in releases following 0.9.0. Use ConsumerGroupCommand instead.

    Kafka0.9版本后,命令ConsumerOffsetChecker已弃用,用新的命令来查. // 列表 bin/kafka-consumer-groups.sh --zookeeper local ...

  3. [Android] 给图像加入相框、圆形圆角显示图片、图像合成知识

        前一篇文章讲述了Android触屏setOnTouchListener实现突破缩放.移动.绘制和加入水印,继续我的"随手拍"项目完毕给图片加入相框.圆形圆角显示图片和图像合 ...

  4. C#和Java中字符串的异同

    字符串 在底层上跟C#类似,每个字符串的实例都不可修改.当修改字符串变量时,是将变量指向新的字符串实例,而不是修改原本的实例.Java中也有字符串池机制. 注意:使用 == 运算符比较字符串时,跟C# ...

  5. 了解机器学习框架CoreML

    代码地址如下:http://www.demodashi.com/demo/11972.html CoreML是iOS 11新推出的机器学习框架,是人工智能的核心内容,他可以在训练好的机器学习模型应用到 ...

  6. Spring事务的传播行为 @Transactional

    Spring事务的传播行为http://blog.csdn.net/cuker919/article/details/5957209 在service类前加上@Transactional,声明这个se ...

  7. UIAlertViewController 2

    iOS 8的新特性之一就是让接口更有适应性.更灵活,因此许多视图控制器的实现方式发生了巨大的变化.全新的UIPresentationController在实现视图控制器间的过渡动画效果和自适应设备尺寸 ...

  8. 使用SAS令牌连接Azure EventHub

    概述 事件中心使用在命名空间和事件中心级别提供的共享访问签名.SAS令牌是从SAS密钥生成的,它是以特定格式编码的URL的SHA哈希. 事件中心可以使用密钥(策略)的名称和令牌重新生成哈希,以便对发送 ...

  9. 设计模式之简单工厂模式(C#语言描述)

    严格意义上来说,简单工厂模式并不属于GoF的23种设计模式,但是它是学习其他工厂模式的基础和前提条件.理解了简单工厂模式,学习工厂方法模式和抽象工厂模式会比较容易一些. 简单工厂模式的定义 定义一个工 ...

  10. TCP/IP ---分层

    TCP/IP的分层 ICMP是IP协议的附属协议.IP层用它来与其他主机或路由器交换错误报文和其他重要信息.尽管ICMP主要被IP使用,但应用程序也有可能访问它.我们将分析两个流行的诊断工具,Ping ...