【Unet】Unet Networked Events 事件同步

Networked Events  网络的事件


      网络的事件就像   客户端 RPC 调用,但不是只在客户端对象上调用一个函数,客户端对象上的事件将被触发。为事件 注册的其他脚本 然后调用 -  参数在服务器上,所以这使得网络的客户端上脚本间交互。事件必须以前缀 “Event” 开头并且有 SyncEvent 的自定义属性。


事件的脚本


using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Networking;
public class NetWorkEvent : NetworkBehaviour
{
    private static NetworkHash128 assetId = NetworkHash128.Parse("e9962587f");

    private static NetWorkEvent instance;

    public static NetWorkEvent Instance
    {
        get
        {
            if (instance == null)
            {
                instance = GameObject.FindObjectOfType(typeof(NetWorkEvent)) as NetWorkEvent;

                if (instance == null)
                {
                    GameObject NetWorkEvent = Instantiate(Resources.Load("NetWorkPrefab/NetWorkEvent")) as GameObject;
                    NetWorkEvent.name = "NetWorkEvent";
                    instance = NetWorkEvent.AddComponent(typeof(NetWorkEvent)) as NetWorkEvent;
                    //NetWorkTools.RegisterModel(NetWorkEvent);
                    //NetWorkTools.SpwanModel(NetWorkEvent, assetId);
                }
            }
            return instance;
        }
    }
    public List<GameObject> spwanList = new List<GameObject>();


    /// <summary>
    /// 消防车事件
    /// </summary>
    [SyncEvent]
    public event System.Action EventOpenFireengineWater;

    public delegate void del_Sound(string name);

    public event del_Sound EventSound;

    //public event System.Action soundInit;

    NetworkHash128 assetid = NetworkHash128.Parse("a123456");

    public void SendFireenWater()
    {
        if (EventOpenFireengineWater != null)
        {
            EventOpenFireengineWater();
        }
    }
    //播放声音
    public void SendSound(string value)
    {
        EventSound(value);
    }

    public void ShowSoundManager()
    {
        if (UnetManager.Instance.ClientOrServer())
        {
            GameObject soundManager = GameObject.Instantiate((Resources.Load("SoundManager") as GameObject), transform.position, Quaternion.identity);
            spwanList.Add(soundManager);
        }
        else
        {
            NetWorkTools.RegisterModel(spwanList[0]);

        }
    }
}

事件的注册

 NetWorkEvent.Instance.EventOpenFireengineWater += OpenFireengineWater;

 public void OpenFireengineWater()
    {
        FireengineWater.SetActive(true);
    }


  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
在Python中,特别是在使用深度学习框架如PyTorch或Keras时,`from unet import UNet`这样的语句通常是在引入预定义的Unet模型。Unet是一个流行的卷积神经网络(CNN)架构,特别适用于像图像分割这样的任务。 具体来说,假设你在一个名为`unet.py`的文件中定义了UNet模型,导入的方式可能是这样的: ```python # 假设unet.py文件有这样的定义: import torch.nn as nn class UNet(nn.Module): def __init__(self, input_channels, output_channels, features=64, depth=5): super(UNet, self).__init__() # UNet的初始化代码,包括下采样、编码器、上采样和解码器部分 # 这里省略了一些细节,但可能包括: self.downsampling_blocks = ... # 下采样层 self.bottleneck = ... # 隐藏层 self.upsampling_blocks = ... # 上采样层 self.final_layer = nn.Conv2d(features, output_channels, kernel_size=1) def forward(self, x): # 前向传播方法 skips = [] for downsampling_block in self.downsampling_blocks: x = downsampling_block(x) skips.append(x) x = self.bottleneck(x) for upsampling_block, skip in zip(self.upsampling_blocks, reversed(skips)): x = upsampling_block(x, skip) return self.final_layer(x) ``` 在你想要使用的模块文件中,你可以像这样导入并实例化Unet: ```python from unet import UNet input_channels = 3 # 输入通道数,比如RGB图像就是3 output_channels = 1 # 输出通道数,对于二值分割通常是1 model = UNet(input_channels, output_channels) ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Unity_阿黄

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值