数字人整合问题解决记录

本文介绍了如何在Python和Unity之间进行UDP通信,包括Python通过socket发送数据到Unity的UdpClient,以及在Unity中处理接收到的数据(如强转字符串为浮点数),以及如何设置FixedTimestep实现定时任务。
摘要由CSDN通过智能技术生成

一、Python和Unity之间的传输

1、Python部分

import socket
import get_bs

sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
serverAddressPort = ("127.0.0.1", 5054)
while True:
    # print(get_bs_data)

    sock.sendto(str.encode(str(需要发送的内容)),serverAddressPort)

2、Unity部分

using UnityEngine;
using System;
using System.Text;
using System.Net;
using System.Net.Sockets;
using System.Threading;
using System.Collections;

public class GetBs : MonoBehaviour
{
	//数据传输部分
	Thread receiveThread;
	UdpClient client;
	public int port = 5054;
	public bool startRecieving = true;
	public bool printToConsole = false;
	public string data;
	public bool isReceive;

	public IEnumerator Start()
	{
		this.GetComponent<GetBs>().enabled = false;
		yield return new WaitForSeconds(0.5f);
		receiveThread = new Thread(
			new ThreadStart(ReceiveData));
		receiveThread.IsBackground = true;
		receiveThread.Start();
		isReceive = true;
	}
	public void Update()
	{
		//data为接收到的数据
	}

	//接收数据的方法
	private void ReceiveData()
	{

		client = new UdpClient(port);
		while (startRecieving)
		{
			try
			{
				IPEndPoint anyIP = new IPEndPoint(IPAddress.Any, 0);
				byte[] dataByte = client.Receive(ref anyIP);
				data = Encoding.UTF8.GetString(dataByte);
				if (printToConsole) { print(data); }
			}
			catch (Exception err)
			{
				print(err.ToString());
			}
		}
	}
}

二、在Unity中实现字符串强转成浮点型

//需要将强转写在try里面才能够正确执行
try
			{
				get_bs_data[i] = float.Parse(split[i]);
			}
			catch
			{
			

三、在Unity中实现间隔一段时间执行一次任务

1、在Edit-Project Setting-Time-Fixed Timestep设置时间为t

在这里插入图片描述

2、使用FixedUpdate方法,就可以间隔t时间调用FixedUpdate内的任务

在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值