unity调用python代码,捕获控制台输出到ui面板上

这篇具有很好参考价值的文章主要介绍了unity调用python代码,捕获控制台输出到ui面板上。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


前言

unity调用python代码后,想把python生成的数据内容直接传到unity内的ui面板上,但不是通过socket通信传递数据。这里直接捕获python内print到控制台的内容。


1.python部分

python代码部分直接print输出想要传递的数据

2.unity部分

传递的数据通过文本的方式被unity接收,通过字符串操作获取想要的数据

public class gtPrediction : MonoBehaviour
{
    private ProcessStartInfo startInfo;
    private Process process;
    private static StringBuilder output = new StringBuilder();
	 void Start()
    {
        Kill_All_Python_Process();
        // 创建UDP通信的Client
        udpClient = new UdpClient();
        // 设置IP地址与端口号
        remoteEP = new IPEndPoint(IPAddress.Parse("127.0.0.1"), 31412);
        localEP = new IPEndPoint(IPAddress.Any, 0);
        //string pythonPath = Application.dataPath + "/TDSTF/TDSTF-main/main.py";
        string pythonPath = "D:/main.py";
        // 创建Process
        process = new Process();
        // 创建ProcessStartInfo对象
        startInfo = new ProcessStartInfo();
        process.StartInfo = startInfo;
        // 设定执行cmd
        //startInfo.FileName = @"E:/DTprediction/Library/PythonInstall/python.exe";
        startInfo.FileName = Application.dataPath + "/StreamingAssets/PythonInstall/python.exe";
        // 输入参数是上一步的command字符串
        startInfo.Arguments = pythonPath;
        // 因为嵌入Unity中后台使用,所以设置不显示窗口
        startInfo.CreateNoWindow = true;
        // 这里需要设定为false
        startInfo.UseShellExecute = false;
        startInfo.RedirectStandardInput = true;     //打开流输入
        // 设置重定向这个进程的标准输出流,用于直接被Unity C#捕获,从而实现 Python -> Unity 的通信
        startInfo.RedirectStandardOutput = true;
        // 设置重定向这个进程的标准报错流,用于在Unity的C#中进行Debug Python里的bug
        startInfo.RedirectStandardError = true;
        //process.StandardInput.AutoFlush = true;//每次调用 Write()之后,将其缓冲区刷新到基础流
        process.OutputDataReceived += new DataReceivedEventHandler(OnOutputDataReceived);
        process.ErrorDataReceived += new DataReceivedEventHandler(OnErrorDataReceived);

        //启动脚本Process,并且激活逐行读取输出与报错
        process.Start();
        process.BeginErrorReadLine();
        process.BeginOutputReadLine();
    }
    private void OnOutputDataReceived(object sender, DataReceivedEventArgs e)
    {
        if (!string.IsNullOrEmpty(e.Data))
        {
            output.Append(e.Data);
            UnityEngine.Debug.Log(output.ToString());
        }
    }
    private void OnErrorDataReceived(object sender, DataReceivedEventArgs e)
    {
        if (!string.IsNullOrEmpty(e.Data))
        {
            // 调试语句
            UnityEngine.Debug.LogError("Received error output: " + e.Data);
        }
    }

}

总结

output.ToString()就是想要的数据了,直接显示在ui即可。文章来源地址https://www.toymoban.com/news/detail-763483.html

到了这里,关于unity调用python代码,捕获控制台输出到ui面板上的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • eclipse 控制台输出中文乱码【全面解决】

    前言:之前看到一篇文章介绍的方法只能修改单个文件,后来找到一个能彻底解决的文章但是看到的人不多,所以我也想着帮忙传播一下更高效的方法,让更多人少走弯路。 1. Window    Preferences 2.General  Workspace Text file encoding 3.选择Other:  然后自己输入 gbk  4.Apply and Close   

    2024年02月11日
    浏览(79)
  • 【DEVOPS】Jenkins使用问题 - 控制台输出乱码

    部门内部对于Jenkins的使用采取的是Master + Slave Work Node的方式,即作为Master节点的Jenkins只负责任务调度,具体的操作由对应的Slave Work Node去执行。 最近团队成员反馈一个问题:一个Linux系统的Slave Work Node的编译日志输出中,中文部分均为乱码(如下图),这造成问题排查效率

    2024年02月11日
    浏览(77)
  • C# 在控制台整齐的输出 DataTable

    效果: 在 Winform 平台,可以用 DataGridView 这样的控件来显示数据库的表单数据,但在 C# 控制台项目中,如果有用到数据库查询,我们想看看查询语句的效果,就比较困难了,比如,我随意写了一个控制台输出,代码如下: 效果: 在 Navicat 16 for MySQL 软件中的查询结果 由于没

    2024年02月12日
    浏览(60)
  • 关于Tomcat控制台输出乱码的若干问题

    ​ 在学习Maven、Tomcat的过程中,发现会在不同的地方出现中文乱码,原本以为是某个设置没有正确,所以,出现乱码。后来发现,需要在不同的地方来进行调整,才能保证Tomcat在控制台的输出,以及Maven过程在参数传递过程中都不会出现乱码。第一次写文章,不怎么会写,大

    2024年02月09日
    浏览(58)
  • Tomcat输出控制台中文乱码问题彻底解决

    目录 文章目录 前言 一、为什么会出现乱码 二、怎么处理乱码问题 1.修改注册表 2.脚步更改配置 三、修改后检查执行 总结         随着互联网的不断发展,软件部署这门技术也越来越重要,很多人在使用Tomcat部署web应用的过程中都遇过诸多的问题,本文就介绍了处理Tomca

    2024年02月08日
    浏览(65)
  • idea在控制台输出debug日志方法

    控制台输出效果如图 方法如下 1.在pom.xml文件中添加如下坐标 2.如果如下报错 则在main/resource下添加log4j.properties文件

    2024年02月20日
    浏览(65)
  • 编程笔记 Golang基础 011 控制台输入与输出

    Golang控制台输入与输入是用内置的 fmt 包来完成的。初学时要经常用到。 在软件开发工具(如Goland)中,控制台通常指的是集成开发环境(IDE)中的一个组件或面板,它模拟了命令行界面(CLI),允许开发者直接在IDE内部运行和调试程序,以及与操作系统进行交互。这个“控

    2024年02月20日
    浏览(54)
  • Pycharm控制台输出内容太多显示不全

    使用pycharm时经常会出现这样的问题:打印的东西太多,导致向上拉的行数不够,pycharm终端只能显示后面的信息,没办法看到最开始的信息。下面来解决这个问题 1、点击pycharm软件的help 2、找到Edit Custom Properties并进入 3、输入如下几行 如下图所示   1000000代表1000000KB,可自行调

    2024年02月12日
    浏览(68)
  • Java学习之Eclipse 控制台中文输出乱码解决

    Eclipse IDE for java Developers 2023-06 版本 缺省情况下,Eclipse将输出中文或非英文字符作为问号(?)或某些奇怪的字符。,它无法显示其他非英语单词。 那么想要在控制台显示中文,我们应该怎么办呢?  先找到run ----再找到里面的 Run Configurations    在跳出的页面的右边选择c

    2024年02月08日
    浏览(65)
  • IDEA 控制台输出中文乱码的简单解决方案

    很多人(包括我)在编程的时候可能会发现:在IDEA的控制台输出中文字符的时候,会出现乱码,如下图: 于是就在网上搜了很多教程,结果弄完了却还是不行。下面是我的解决方案: 其实,问题出在JDK上:JDK18开始,编码变成GBK了,不再是UTF-8,而IDEA的默认配置又是UTF-8,所

    2023年04月18日
    浏览(50)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包