// NOTE:
    // Awake で初期化時に呼び出すことは強くしない方が良いです。
    // NetworkManager が Awake を使った初期化を実行するためです。
    // Awake によって、singleton などの初期化を行っているようです。
    // Awake を override する手段がないので、やむを得ずこのような実装になります。
    // (Unity は Awake → OnEnable → Start の順に実行されます。)

    /// <summary>
    /// 有効化時に呼び出されます。
    /// </summary>
    protected virtual void OnEnable()
    {
        this.connectionType = UNETConnectionType.None;

        this.statusMessages = new List <UNETStatusMessage>();

        AddStatusMessage(CustomNetworkManager.MessageDefault);
    }
    /// <summary>
    /// ホストで開始されたときに呼び出されます。
    /// </summary>
    public override void OnStartHost()
    {
        AddStatusMessage("Start Host.");

        this.connectionType = UNETConnectionType.Host;

        base.OnStartHost();

        this.StartHostEventHandler.Invoke();
    }
    /// <summary>
    /// クライアントで停止したときに呼び出されます。
    /// </summary>
    public override void OnStopClient()
    {
        AddStatusMessage("Stop Client.");

        this.connectionType = UNETConnectionType.None;

        this.autoConnectPreviousTryTimeSec = Time.timeSinceLevelLoad;

        base.OnStopClient();

        this.StopClientEventHandler.Invoke();
    }
    /// <summary>
    /// クライアントで開始されたときに呼び出されます。
    /// </summary>
    /// <param name="networkClient">
    /// 該当するクライアント。
    /// </param>
    public override void OnStartClient(NetworkClient networkClient)
    {
        if (this.connectionType != UNETConnectionType.Host)
        {
            AddStatusMessage("Start Client.");
            this.connectionType = UNETConnectionType.Client;
        }

        base.OnStartClient(networkClient);

        this.StartClientEventHandler.Invoke(networkClient);
    }
    // NOTE:
    // 以下のメソッドで実行される一部の処理は、base メソッドよりも先に実行されています。
    // base メソッドの中で、引数となる接続情報を破棄する処理などが実行されるためです。
    //
    // Host として起動する場合、OnStartHost が実行された後に、
    // OnStartServer, OnStartClient が実行される点に注意してください。
    //
    // 停止するタイミングで this.autoConnectPreviousTryTimeSec をリセットしています。
    // 停止した直後に自動接続が実行されないようにするための措置です。

    #region Override Server

    /// <summary>
    /// サーバーで開始されたときに呼び出されます。
    /// </summary>
    public override void OnStartServer()
    {
        if (this.connectionType != UNETConnectionType.Host)
        {
            AddStatusMessage("Start Server.");
            this.connectionType = UNETConnectionType.Server;
        }

        base.OnStartServer();

        this.StartServerEventHandler.Invoke();
    }