UNET创建不同的玩家示例

没想到这么多年了还有人在用UNET,如果对UNET熟悉的话建议转Mirror,Asset Store里面可以免费下载,还有团队一直在维护

---------------------------------------------------------------------------------------------------------------------------------

using UnityEngine;
using System.Collections;
using UnityEngine.UI;
using UnityEngine.Networking;


public class MyNetworkManager : NetworkManager {


private string ipAddress;
public int chosenCharacter = 0;


//subclass for sending network messages
public class NetworkMessage : MessageBase {
public int chosenClass;
}


public override void OnServerAddPlayer(NetworkConnection conn, short playerControllerId, NetworkReader extraMessageReader) {
NetworkMessage message = extraMessageReader.ReadMessage< NetworkMessage>();
int selectedClass = message.chosenClass;
Debug.Log("server add with message "+ selectedClass);


if (selectedClass == 0) {
GameObject player = Instantiate(Resources.Load("Player")) as GameObject;
NetworkServer.AddPlayerForConnection(conn, player, playerControllerId);
}


if (selectedClass == 1) {
GameObject player = Instantiate(Resources.Load("Car")) as GameObject;
NetworkServer.AddPlayerForConnection(conn, player, playerControllerId);
}
}


public override void OnClientConnect(NetworkConnection conn) {
NetworkMessage test = new NetworkMessage();
test.chosenClass = chosenCharacter;


ClientScene.AddPlayer(conn, 0, test);
}




public override void OnClientSceneChanged(NetworkConnection conn) {
//base.OnClientSceneChanged(conn);
}


public void btn1() {
chosenCharacter = 0;
}


public void btn2() {
chosenCharacter = 1;
}

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
以下是一个基于PyTorch框架实现的UNet图像分割代码示例: ```python import torch import torch.nn as nn import torch.nn.functional as F class DoubleConv(nn.Module): """Double convolution layer with batch normalization and ReLU activation""" def __init__(self, in_channels, out_channels): super(DoubleConv, self).__init__() self.conv = nn.Sequential( nn.Conv2d(in_channels, out_channels, kernel_size=3, stride=1, padding=1), nn.BatchNorm2d(out_channels), nn.ReLU(inplace=True), nn.Conv2d(out_channels, out_channels, kernel_size=3, stride=1, padding=1), nn.BatchNorm2d(out_channels), nn.ReLU(inplace=True) ) def forward(self, x): return self.conv(x) class UNet(nn.Module): """UNet architecture for image segmentation""" def __init__(self, in_channels=3, out_channels=1, features=[64, 128, 256, 512]): super(UNet, self).__init__() self.downs = nn.ModuleList() self.ups = nn.ModuleList() self.pool = nn.MaxPool2d(kernel_size=2, stride=2) # Encoder for feature in features: self.downs.append(DoubleConv(in_channels, feature)) in_channels = feature # Decoder for feature in reversed(features): self.ups.append(nn.ConvTranspose2d(feature*2, feature, kernel_size=2, stride=2)) self.ups.append(DoubleConv(feature*2, feature)) self.bottleneck = DoubleConv(features[-1], features[-1]*2) self.final_conv = nn.Conv2d(features[0], out_channels, kernel_size=1) def forward(self, x): skip_connections = [] # Encoder for down in self.downs: x = down(x) skip_connections.append(x) x = self.pool(x) # Bottleneck x = self.bottleneck(x) # Decoder skip_connections = skip_connections[::-1] for idx in range(0, len(self.ups), 2): x = self.ups[idx](x) skip_connection = skip_connections[idx//2] if x.shape != skip_connection.shape: x = F.interpolate(x, size=skip_connection.shape[2:], mode='bilinear', align_corners=True) x = torch.cat((skip_connection, x), dim=1) x = self.ups[idx+1](x) # Final convolution x = self.final_conv(x) return x ``` 这个代码实现了一个UNet模型,包括Encoder和Decoder部分,以及一个bottleneck层和一个最终的卷积层。UNet模型的核心思想是在Encoder部分通过不断下采样(使用MaxPooling)来提取图像的低级特征,然后在Decoder部分通过上采样(使用ConvTranspose2d)和跳过连接(skip connections)来逐渐恢复图像的分辨率并提取高级特征,最终输出图像的分割结果。在这个实现中,我们使用了双卷积层(DoubleConv)作为UNet的基本构建块,每个双卷积层都包含两个卷积层、批量归一化和ReLU激活函数。UNet的输入是一个3通道的图像,输出是一个1通道的分割结果。可以根据具体的应用场景,调整输入和输出的通道数,以及Encoder和Decoder的层数和特征数。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值