unity3d Ngui UISlider
2015-06-03 17:14
501 查看
<pre name="code" class="csharp">using UnityEngine; using System.Collections; using System.Collections.Generic; public class ExpSlider : MonoBehaviour { private bool DisplayText { get; set; } private UISlider mExpSlider; private UILabel mExp_lbl_text; private float m_fCurExp = 0f;//当前经验 private float m_fNextExp = 0f;//升级经验 private float m_fTempExp = 0f; private float m_fTempAddExp = 0f; private float m_fSliderValueSpeed = 0.02f;//Slider值增长的速度 private float m_fTempAddExpdif = 10;//Label经验值位数 void Start() { //InitExpSlider();//初始化经验条相关UI UISlider UILabel //InitExpInfo();//初始化经验条数值 CurExp NextExp } void Update() { UpdateExp(); } public void InitExpSlider(UISlider ExpSlider, UILabel Exp_lbl) { DisplayText = true; if (ExpSlider) { mExpSlider = ExpSlider; mExpSlider.sliderValue = 0; } if (Exp_lbl) { mExp_lbl_text = Exp_lbl; } } public void InitExpInfo(float fCurExp,float fNextExp) { m_fCurExp = fCurExp;//当前经验 m_fNextExp = fNextExp;// if (CompuletCount((int)m_fCurExp) >= 5) m_fTempAddExpdif = Mathf.Pow(10, CompuletCount((int)m_fCurExp) - 3);//为控制经验其增长速度(十百千万) else if (CompuletCount((int)m_fCurExp) > 2) m_fTempAddExpdif = Mathf.Pow(10, CompuletCount((int)m_fCurExp) - 2); m_fTempAddExp = m_fCurExp / (int)m_fTempAddExpdif; ReSetSliderSteps(); } private int CompuletCount(int num)//计算当前经验值位数 { int i = 1; int count = 0; do { ++count; i *= 10; } while (i < num); return count; } private void UpdateExpLabel(float exp)//经验数值显示 { if (mExpSlider == null || exp <= 0) return; if (exp > m_fCurExp) exp = m_fCurExp; if (DisplayText) mExp_lbl_text.text = string.Format("{0}", (int)exp);//当前经验 //mExp_lbl_text.text = string.Format("{0}/{1}", (int)exp, (int)m_fNextExp); else mExp_lbl_text.text = ""; } private void UpdateExpSlider()//经验条动态显示 { if (mExpSlider == null) return; if (mExpSlider.sliderValue >= m_fCurExp / m_fNextExp) return; mExpSlider.sliderValue += m_fSliderValueSpeed; // if (mExpSlider.sliderValue >= 1) // mExpSlider.sliderValue = 0; } private void ReSetSliderSteps() { mExpSlider.numberOfSteps = (int)m_fNextExp; if (m_fCurExp >= 0) mExpSlider.sliderValue = 0; } public void UpdateExp() { if (null != mExpSlider) { UpdateExpSlider(); if (null != mExp_lbl_text) { if (m_fTempExp <= m_fCurExp) { m_fTempExp += m_fTempAddExp; UpdateExpLabel(m_fTempExp); } } } } }
相关文章推荐
- Kinect结合Unity3D引擎开发体感游戏(一)
- Unity3D中脚本的执行顺序和编译顺序
- Unity3D动态对象优化代码分享
- unity3d发布apk在android虚拟机中运行的详细步骤(unity3d导出android apk)
- Unity3D游戏引擎实现在Android中打开WebView的实例
- unity3d调用手机或电脑摄像头
- 分享一个开源的网络游戏服务器架构—HouHai
- Unity3D插件详细评测及教学下载
- Unity3D上路_01-2D太空射击游戏
- Unity3D上路_02-第一视角射击游戏
- Unity3D上路_03-塔防游戏
- Unity3D上路_04-基础资源介绍
- Unity3D上路_05-网络相关
- RHEL 4.7 (64bit) 环境安装 GCC 4.6 测试记录 (更新至gcc-4.6.1)
- Unity3d TransformPoint 函数研究
- Unity3d 动态加载fbx模型文件