50字范文,内容丰富有趣,生活中的好帮手!
50字范文 > 选择英雄 暴君 青巫 风灵 代码控制界面显示

选择英雄 暴君 青巫 风灵 代码控制界面显示

时间:2020-03-05 07:22:13

相关推荐

选择英雄 暴君 青巫 风灵 代码控制界面显示

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

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

核心代码:

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上的都做成了一个预设体,我怕我分的太细,我会乱,实际上已经乱了,我是在分不清东西南北之后才弄成一个的,一开始我跟贤惠小媳妇一样,一个一个分的可细了,结果发现到后面没发现了,因为稍微有一点不一样我就需要自己重写脚本,快赶上重新做一个框架了,

这是在原来的基础上新增的几个,

自此,这选择界面就算告一段落了,我还要写主界面,所以等我有时间了回来再完善,

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

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。