实现的功能是,能根据你选的男女,不同的类型,会出现不同的人物模型,同时左上角的签名和下面的名称也会改变,原本想点击骰子可以随机产生名字,不过还没有实现

(男-女,暴君-青巫-风灵,选一个上一个就会变暗)这个功能用到两个脚本,不是我自己写的,老大写好的,我直接拿来用的
核心代码:

using UnityEngine;
using System.Collections;
public class UIOption : MonoBehaviour {[SerializeField]private UISprite selected;
//    [SerializeField]
//    private UISprite unSelected;void OnClick(){selected.alpha = 1;}void Start(){ResetOption();if(this.name =="male "){this.GetComponent<UISprite>().alpha = 1;}}void ResetOption(){selected.alpha = 0;//unSelected.alpha = 1;}
}

不过吧我觉得第二个参数有没有都行,所以就删了,不影响功能

using UnityEngine;
using System.Collections;
public class UIRoleStyleOptionWindowCtr : UIWindowCtrlBase {private UIOption[] optionArray;protected override void OnStart(){base.OnStart();optionArray = transform.GetComponentsInChildren<UIOption>();for (int i = 0; i < optionArray.Length;i++ ){UIEventListener.Get(optionArray[i].gameObject).onClick += OnOptionClick;}}void OnOptionClick(GameObject option){for (int i = 0; i < optionArray.Length; i++){if (option.GetComponent<UIOption>() != optionArray[i]) {optionArray[i].gameObject.SendMessage("ResetOption");}}}
}

以男女为例,我实际上是四张图片,两张亮的,两张暗的,暗的在上面

暗的图片要点击所以加上box碰撞器,button脚本,还有上面的Option脚本,参数是那个亮的图片,亮的图片上面不用挂任何东西,

暗的图片上一级就是选择的Container上挂另一个脚本,UIRoleStyleOptionWindowCtr,这样按理来说就可以实现了,运行后,点男的亮,点女的,女亮,男暗,只能选一个,

但是我经常会出现不稳定的状况,步骤都对,效果就是不对,我也是疯了,一遍一遍的做,直到它正常了,天知道,我做完运行成功后,激动得哭了。。。

其实我希望达到的效果是性别男时,出现的是三个男头像,因为这次都是用代码正规的做的,我觉得用SetActive还是不大正规,应该还有别的更好的方法,这一点等以后我来补充,

第二部分,人物的出现,我是把人物模型放到了高出,刚好看不到的位置,选择这个模式,就用代码改变人物的坐标,这个的升级版是人物出现的时候执行一个跳下的动作,不过还没有做,我也没找到想相关的动作

using UnityEngine;
using System.Collections;
public class button : MonoBehaviour {private Sex sex = Sex.Boy;//默认选择性别男private Name name = Name.mojun;//默认选择人物是暴君private ChooseHero hero = ChooseHero.Warrior;//默认出现的人物模型是男暴君public GameObject[] héros;//保存人物模型的public GameObject[] hero name;//保存的是英雄的名字,用于下面输入框的显示private int beindex = 1;//上一个选择的人物模型代号public int index = 0;//当前选择的人物模型private int beindexname = 1;//上一个选择的人物的名字public int indexname = 0;//当前的名字private GameObject boy;//男性的头像private GameObject girl;//女性的头像public UILabel label;//下面那个显示的人物的名字void Start () {gril = GameObject.Find ("female_touxiang");boy = GameObject.Find ("man_touxiang");BindClick();Showhero ();gril.SetActive (false);boy.SetActive (false);}void Update () {}//绑定点击回调函数void BindClick(){UIOption[] btnArr2 = transform.GetComponentsInChildren<UIOption>();//限制在本窗口 //因为这些按钮我都有UIOption脚本,所以通过这个来找到所有的按钮for(int i = 0;i<btnArr2.Length;i++){UIEventListener.Get(btnArr2[i].gameObject).onClick += Click;//添加事件,这里有一个注意点,因为前面的登录界面,用了一次这个,所以这里再用就得把这两处的=换成+=,不然没效果,我觉得是覆盖了}}//点击的回调函数void Click(GameObject btnObj){Debug.Log (btnObj.name);switch (btnObj.name) {case "male ":sex = Sex.Boy;gril.SetActive(false);//笨方法来控制头像的消失和出现boy.SetActive(true);break;case "female":sex = Sex.Gril;boy.SetActive(false);gril.SetActive(true);break;case "baojun":name = Name.mojun;break;case "fengling":name = Name.fengling;break;case "qingwu":name = Name.qingwu;break;default:break;}Showhero ();}public void Showhero(){if(sex ==Sex.Boy&&name ==Name.mojun){index = 0;//indexname = 0;//label.text = "Archer";}if(sex ==Sex.Boy&&name ==Name.fengling){index = 1;indexname =1;label.text = "Mage";}if(sex ==Sex.Boy&&name ==Name.qingwu){index = 2;indexname = 2;label.text = "Warrior";}if(sex ==Sex.Gril&&name ==Name.mojun){index = 3;indexname =0;label.text= "Archer";}if(sex ==Sex.Gril&&name ==Name.fengling){index = 4;indexname =1;label.text= "Mage";}if(sex ==Sex.Gril&&name ==Name.qingwu){index = 5;indexname =2;label.text= "Warrior";}if(index ==beindex){return;//表示再返回新的一轮的时候,例如默认男暴君,重新选择男暴君的时候}if(indexname==beindexname){return;//同理,}heros [index].transform.localPosition = new Vector3 (2,-675,1);//上面看不到的位置heros [beindex].transform.localPosition =new Vector3 (2,-235,1);//跳下来的位置beindex = index;//从下面再到上面消失不见heroname [indexname].transform.localPosition = new Vector3 (-211,121,0);heroname [beindexname].transform.localPosition =new Vector3 (-211,321,0);beindexname = indexname;//这个位置跳跃我出过一次错误,一开始写的是transform.position,但是运行后发现,人物下来的时候总会偏移,所以改成了transform.localPosition,这样就好了}}

针对这个代码显示界面,因为前面有一个登录注册的框架了,所以直接改就行了,不过还是要自己写几个脚本,为了方便,我把所有NGUI上的都做成了一个预设体,我怕我分的太细,我会乱,实际上已经乱了,我是在分不清东西南北之后才弄成一个的,一开始我跟贤惠小媳妇一样,一个一个分的可细了,结果发现到后面没发现了,因为稍微有一点不一样我就需要自己重写脚本,快赶上重新做一个框架了,

这是在原来的基础上新增的几个,
自此,这选择界面就算告一段落了,我还要写主界面,所以等我有时间了回来再完善,

事实上,我今天写主界面的功夫,回头再打开它,人物选择上面就有一点不对了,一天不召见,就敢跟我尥蹶子,我也是无奈了

选择英雄,暴君,青巫,风灵,代码控制界面显示相关推荐

  1. [unreal4入门系列之十一] 在UE4中编写C++代码控制角色

    当你运行我们上次做完的项目,你可能会意识到我们移动的摄像机还是默认的那个摄像机,这个默认的摄像机可以自由飞翔.这一节,我们要使得开始的角色是我们的一个Avatar类的实例对象,并且使用键盘控制我们的角 ...

  2. 【iOS 开发】iOS 开发 简介 (IOS项目文件 | MVC 模式 | 事件响应机制 | Storyboard 控制界面 | 代码控制界面 | Retina 屏幕图片适配)

    一. iOS 项目简介 1. iOS 文件简介 创建一个 HelloWorld 项目, 在这个 IOS 项目中有四个目录 : 如下图; -- HelloWorldTests 目录 : 单元测试相关的类 ...

  3. 关于Unity中Mecanim动画的动画状态代码控制与代码生成动画控制器

    对于多量的.复杂的.有规律的控制器使用代码生成 动画状态代码控制 1:每个动画状态,比如进入状态,离开状态, 等都有可能需要代码来参与和处理,比如,进入这个动画单元后做哪些事情,来开这个动画单元后做哪 ...

  4. c语言游戏人物控制,在UE4中编写C++代码控制角色

    当你运行我们上次做完的项目,你可能会意识到我们移动的摄像机还是默认的那个摄像机,这个默认的摄像机可以自由飞翔.这一节,我们要使得开始的角色是我们的一个Avatar类的实例对象,并且使用键盘控制我们的角 ...

  5. MouseJack:利用15美元的工具和15行代码控制无线鼠标和键盘

    MouseJack:利用15美元的工具和15行代码控制无线鼠标和键盘 Bastille的研究团队发现了一种针对蓝牙键盘鼠标的攻击,攻击者可以利用漏洞控制你的电脑操作.研究团队将此攻击命名为MouseJ ...

  6. 【UnityUGUIShader】创建材质球Material代码控制更换物体材质球

    UGUI(Unity Graphical User Interface 简称 UGUI,又称图形用户接口)如何创建材质球 NGUI(Next-generation GUI,下一代图形用户接口) Ass ...

  7. 如何做好开始游戏选择英雄界面[不是标题党]

    首先,游戏大家肯定玩过吧?好吧我没怎么玩..但是那些游戏是因为什么吸引你进来的?肯定是好看的游戏选择英雄界面对吧! 那让我们做出一个好看的游戏界面吧!好,废话不多说上代码! 当然,其他属性那些的设置可 ...

  8. java代码控制qq、微信发送消息

    对于程序QQ.微信的程序控制,本人并不是直操纵他官方提供的接口,而且直接借用github大佬开发的第三方辅助程序,开放出来接口供java代码调用,实现java代码控制qq.微信发消息的功能. 一.代码 ...

  9. 代码 控制unity 暂停 编辑器_Unity3D 报错解决方案及常用功能收集

    1.在Dictionary迭代器进行修改: var _key = index2factionDic.Keys.GetEnumerator(); stringitem; while(_key.MoveN ...

最新文章

  1. 空洞卷积aspp 学习笔记
  2. LNMP架构之环境搭建
  3. rowmapper_Spring Integration Jdbc RowMapper示例
  4. 移动电子商务,“移动”至生活
  5. CentOS 安装gnutls
  6. Reactjs 15.4.X IE11 Objects are not valid as a React child
  7. Java经典编程题50道之四十二
  8. H3C交换机设备使用QOS策略方式实现报文过滤
  9. Cesium开发: Draco模型压缩
  10. 网吧无盘服务器连接交换机,网吧为什么要使用万兆交换机
  11. 高绩效团队-VUCA时代的五个管理策略《一》—全书回顾
  12. 解决CondaVerificationError: The package for pytorch located at...
  13. 5种小型设备上深度学习推理的高效算法
  14. python乘法函数_乘积(python乘法函数)
  15. 【踔厉奋发,笃行不怠】中创算力召开2021年终工作会议
  16. php时间戳,日期时间转换及使用大全
  17. Template-Web
  18. 2007我的找工作之旅 - 洛丽塔之痒 - 洛丽塔之痒 - 和讯博客
  19. IgH详解十、EtherCAT DC(1)理论
  20. 第二届计算语言学讲习班的感触

热门文章

  1. 山东大学计算机研究生英语四级,山东大学英语四级考试
  2. supervise进程监控工具
  3. mikrotik运行其他Linux软件,MikroTik ROS系统的几种安装方法
  4. r语言中,为什么用as.matrix将dataframe转化为matrix后,里面的数字都变成字符串了...
  5. 天府杯E题 Question E: New Energy Promotion And Environmental Protection.
  6. java如何建Cube类,(JAVA)MyColorCube5(另一个Matrix3D类与面消隐)
  7. matlab 马里奥像素图
  8. CUMT学习日记——ucosII理论解析—任哲版教材
  9. markdown 写微信公众号,排版交给 mdnice
  10. 广汽本田定价混乱,让消费者对于凌派和飞度无所适从