zoukankan      html  css  js  c++  java
  • NETWORK遍历所有关卡

    var supportedNetworkLevels : String[] = [ "mylevel" ];//关卡名的数组
    var disconnectedLevel : String = "loader";//没有连接上服务进入的空关卡名

    // Keep track of the last level prefix (increment each time a new level loads)
    private var lastLevelPrefix = 0;

    function Awake ()
    {
     // Network level loading is done in a seperate channel.
     DontDestroyOnLoad(this);
     networkView.group = 1;//这个还不是很了解
     Application.LoadLevel(disconnectedLevel);//载入没有连接的关卡
    }

    function OnGUI ()
    {
     // When network is running (server or client) then display the levels
     // configured in the supportedNetworkLevels array and allow them to be loaded
     // at the push of a button
     if (Network.peerType != NetworkPeerType.Disconnected)
     {
      GUILayout.BeginArea(Rect(0, Screen.height - 30, Screen.width, 30));
      GUILayout.BeginHorizontal();
      
      for (var level in supportedNetworkLevels)//遍历关卡的数组、这个是在外部接口自己填写
      {
       if (GUILayout.Button(level))
       {
        // Make sure no old RPC calls are buffered and then send load level command
        Network.RemoveRPCsInGroup(0);
        Network.RemoveRPCsInGroup(1);
        // Load level with incremented level prefix (for view IDs)
        networkView.RPC( "LoadLevel", RPCMode.AllBuffered, level, lastLevelPrefix + 1);
       }
      }
      GUILayout.FlexibleSpace();
      GUILayout.EndHorizontal();
      GUILayout.EndArea();
     }
    }

    @RPC
    function LoadLevel (level : String, levelPrefix : int)
    {
     Debug.Log("Loading level " + level + " with prefix " + levelPrefix);
     lastLevelPrefix = levelPrefix;

     // There is no reason to send any more data over the network on the default channel,
     // because we are about to load the level, thus all those objects will get deleted anyway
     Network.SetSendingEnabled(0, false); 

     // We need to stop receiving because first the level must be loaded.
     // Once the level is loaded, RPC's and other state update attached to objects in the level are allowed to fire
     Network.isMessageQueueRunning = false;
      
     // All network views loaded from a level will get a prefix into their NetworkViewID.
     // This will prevent old updates from clients leaking into a newly created scene.
     Network.SetLevelPrefix(levelPrefix);
     Application.LoadLevel(level);
     yield;
     yield;

     // Allow receiving data again
     Network.isMessageQueueRunning = true;
     // Now the level has been loaded and we can start sending out data
     Network.SetSendingEnabled(0, true);

     // Notify our objects that the level and the network is ready
     for (var go in FindObjectsOfType(GameObject))
      go.SendMessage("OnNetworkLoadedLevel", SendMessageOptions.DontRequireReceiver); 
    }

    function OnDisconnectedFromServer ()
    {
     Application.LoadLevel(disconnectedLevel);
    }

    @script RequireComponent(NetworkView)

  • 相关阅读:
    第三周作业
    面向过程(或者叫结构化)分析方法与面向对象分析方法到底区别在哪里?请根据自己的理解简明扼要的回答。
    移动APP开发使用什么样的原型设计工具比较合适?
    java 从上至下打印二叉树
    Qt applendPlainText()/append() 多添加一个换行解决方法
    tolua 转换 std::shared_ptr
    cmake add_custom_command 使用
    Boost使用笔记(Smart_ptr)
    webpack4 安装
    git安装管理
  • 原文地址:https://www.cnblogs.com/softimagewht/p/2160728.html
Copyright © 2011-2022 走看看