网站公告 | 全新unity3d 完整学习路线,最强课程配套、服务!详情点击
查看: 4395|回复: 5
收起左侧

[Unity3d] 泰斗破坏神 17课 报错NullReferenceException 求解决

[复制链接]

[Unity3d] 泰斗破坏神 17课 报错NullReferenceException 求解决[复制链接]

疯狂箱子 发表于 2018-3-29 12:07:36 [显示全部楼层] 回帖奖励 |倒序浏览 |阅读模式 回复:  5 浏览:  4395
10泰斗币
using UnityEngine;
using System.Collections;

public class StartmenuController : MonoBehaviour {
    public static StartmenuController _instance;

    //start面板相关组件注册
    public TweenScale startpanelTween;
    public UILabel usernameLabelStart;
    public UILabel servernameLabelStart;
    public TweenPosition startpanelTweenPos;
    //login面板相关组件注册
    public TweenScale loginpanelTween;
    public UIInput usernameInputLogin;
    public UIInput passwordInputLogin;
    public static string username;
    public static string password;

    //register面板相关塑件注册
    public TweenScale registerpanelTween;
    public UIInput usernameInputRegister;
    public UIInput passwordInputRegister;
    public UIInput repasswordInputRegister;


    //server面板相关组件注册
    public TweenScale serverpanelTween;
    private bool haveInitServerlist=false;
    public UIGrid serverlistGrid;
    public GameObject serveritemRed;
    public GameObject serverietemGreen;
    public static ServerProperty sp;
    public GameObject serversecetedGo;


    //charactedselect面板相关组建注册
    public TweenPosition charactedselectTweenP;
    public GameObject[] characterArry;
    private GameObject characterselected;//当前选择角色
    public TweenPosition charactershowTween;
    public UIInput characternameInput;
    public GameObject[] characterselectArry;
    public Transform characterSelectParent;
    public UILabel nameLabelcharacterselect;
    public UILabel levelLabelcharacterselect;

    void Awake(){
        _instance = this;
    }
    //初始化
    public void Start(){
        InitServerLiset ();
    }
    //start面板逻辑处理模块
    public void OnUsernameClick(){
        //进入登录界面

        HidePanel (startpanelTween);
        ShowPanel (loginpanelTween);

    }
    public void OnServerClick(){
        //选择服务器
        HidePanel (startpanelTween);
        ShowPanel (serverpanelTween);


    }
    public void OnEnterGameClick(){
        //1.连接服务器  验证用户名和服务器
        //TODO
        //2.进入角色选择界面
        startpanelTweenPos.PlayForward ();
        HidePosition (startpanelTweenPos);
        charactedselectTweenP.gameObject.SetActive (true);
        charactedselectTweenP.PlayForward ();
    }



    //login面板逻辑处理模块
    public void OnLoginClick(){
        //1 获取username  password
        username = usernameInputLogin.value;
        password = passwordInputLogin.value;
        //返回开始界面
        HidePanel (loginpanelTween);
        ShowPanel (startpanelTween);
        //修改开始界面的用户名
        usernameLabelStart.text = username;
    }
    public void OnLoginCloseClick(){
        HidePanel (loginpanelTween);
        ShowPanel (startpanelTween);
    }
    public void OnRegisterShowClick(){
        //隐藏当前面板 显示注册面板
        HidePanel (loginpanelTween);
        ShowPanel (registerpanelTween);

    }


    //register面板逻辑处理
    public void OnCancelClick(){
        //隐藏当前面板 显示登录面板
        HidePanel (registerpanelTween);
        ShowPanel (loginpanelTween);
    }
    public void OnRegisterAndLoginClick(){
        //隐藏当前面板 显示开始面板
        //1 本地校验
        
        //2 注册失败
        
        //3 注册成功
        //保存用户名 密码
        username = usernameInputRegister.value;
        password = passwordInputRegister.value;
        //隐藏当前面板 显示登录面板
        HidePanel (registerpanelTween);
        ShowPanel (startpanelTween);
        //更新开始界面用户名
        usernameLabelStart.text = username;

    }
    public void OnRegisterCloseClick(){
        OnCancelClick ();
    }




    //server面板相关逻辑处理
    //服务器列表初始化
    public void InitServerLiset(){
        if (haveInitServerlist)return;
        //1连接服务器  取得服务器列表信息

        //2根据列表信息  初始化服务器列表
        for (int i=0; i<20; i++) {
            //ip name count
            string ip="127.0.0.1";
            string name =(i+1)+"区 马达加斯加";
            int count = Random.Range(0,100);
            GameObject go = null;
            if(count>50){
                go =NGUITools.AddChild(serverlistGrid.gameObject,serveritemRed);
            }
            else{
                go =NGUITools.AddChild(serverlistGrid.gameObject,serverietemGreen);
            }
            ServerProperty sp =go.GetComponent<ServerProperty>();
            sp.ip=ip;
            sp.name=name;
            sp.count=count;
            serverlistGrid.AddChild(go.transform);
        }
    }
    //选择列表中服务器的响应方法
    public void OnServerselect(GameObject serverGo){
        sp = serverGo.GetComponent<ServerProperty>();
        serversecetedGo.GetComponent<UISprite> ().spriteName = serverGo.GetComponent<UISprite> ().spriteName;
        serversecetedGo.transform.Find ("Label").GetComponent<UILabel> ().text = sp.name;
    }

    //确认服务器的响应方法
    public void OnServerselectEnterClick(){
        //隐藏服务器列表界面  显示开始界面
        HidePanel (serverpanelTween);
        ShowPanel (startpanelTween);
        //
        servernameLabelStart.text = sp.name;


    }



    //角色选择相关逻辑处理
    //更换角色按钮方法处理
    public void OnButtonChangecharacterClick(){
        //charactedselectTweenP.PlayReverse ();
        HidePosition (charactedselectTweenP);
        ShowPosition (charactershowTween);
    }
    //选择角色界面中选中的角色放大处理
    public void OnCharacterClick(GameObject go){
        //选择后将角色放大一倍
        iTween.ScaleTo(go,new Vector3(180f*1.5f,300f*1.5f,180f*1.5f),0.5f);


        if (characterselected != null && characterselected!=go) {
            iTween.ScaleTo (characterselected, new Vector3 (180f, 300f, 180f), 0.5f);

        }
        characterselected=go;


    }

   public void OnCharacterSureClick(){
        //1判断姓名是否合法
        //TODO
        //2是否选择角色
        //TODO
        int index = -1;
        for (int i=0; i<characterArry.Length; i++) {
            if(characterselected ==characterArry){
                index=i;
                break;
            }
        }
        if(index==-1){
            return;
        }
        //清空当前角色
        GameObject.Destroy (characterSelectParent.GetComponentInChildren<Animation>().gameObject);

        //把选择的角色更新到面板
        GameObject go= GameObject.Instantiate (characterArry [index] ,Vector3.zero,Quaternion.identity)as GameObject;
        go.transform.parent = characterSelectParent;
        go.transform.localPosition = Vector3.zero;
        go.transform.localRotation = Quaternion.identity;
        //更新角色的名字和等级
        nameLabelcharacterselect.text = characternameInput.value;
        levelLabelcharacterselect.text = "Lv1";

        OnCharacterBackClick ();
    }
    //对返回按钮的方法处理
    public void OnCharacterBackClick(){
        HidePosition (charactershowTween);
        ShowPosition (charactedselectTweenP);
   
    }




    //倒序播放Scale动画
    public void HidePanel(TweenScale tween){
        tween.PlayReverse ();
        StartCoroutine (HideScale(tween));
    }
    //关闭Scale动画资源
    IEnumerator HideScale(TweenScale tween){
        yield return new WaitForSeconds(0.4f);
        tween.gameObject.SetActive (false);
    }

    //倒序播放Position动画
    public void HidePosition(TweenPosition tween){
        tween.PlayReverse ();
        StartCoroutine (HideScaleP(tween));
    }
    //关闭Position动画资源
    IEnumerator HideScaleP(TweenPosition tween){
        yield return new WaitForSeconds(0.4f);
        tween.gameObject.SetActive (false);
    }

    //开始动画
    public void ShowPanel(TweenScale tween){
        tween.gameObject.SetActive (true);
        tween.PlayForward ();


    }
    public void ShowPosition(TweenPosition tween){
        tween.gameObject.SetActive (true);
        tween.PlayForward ();
        
        
    }


}

+1
4393°C
5
  • 疯狂箱子
  • 疯狂箱子
  • 追逐浪尖
  • ty569ki
  • Momochi
过: 他们
因分享而快乐,学习以自强!
疯狂箱子
 楼主|
发表于 2018-3-29 12:36:28 显示全部楼层
不好意思  发太长了
截图一下好了


因分享而快乐,学习以自强!
疯狂箱子
 楼主|
发表于 2018-3-29 14:19:05 显示全部楼层
难道没救了吗   萌新寻求帮助
因分享而快乐,学习以自强!
追逐浪尖 发表于 2018-4-4 13:41:10 显示全部楼层
楼主用的itween是哪个版本?
因分享而快乐,学习以自强!
ty569ki 发表于 2018-4-19 06:20:39 来自手机 显示全部楼层
你把报错信息全部贴出来看看呗
因分享而快乐,学习以自强!
Momochi 发表于 2018-7-27 15:32:36 显示全部楼层
虽然看不懂  但是还是给你点个赞
因分享而快乐,学习以自强!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

VR/AR版块|Unity3d|Unreal4|新手报道|小黑屋|站点地图|沪ICP备14023207号-9|【泰斗社区】-专注互联网游戏和应用的开发者平台 ( 浙ICP 备 13006852号-15 )|网站地图

© 2001-2013 Comsenz Inc.  Powered by Discuz! X3.4

1
QQ