Unity直接调用Python脚本
Windows and Ubuntu
Windows
Unity的工程直接调用 python脚本,然后输出相应的结果。
1 Unity 工程和脚本
新建一个工程,并添加脚本LoadPython.cs
using System.Collections;
using System;
using System.Collections.Generic;
using UnityEngine;
using System.Diagnostics; //需要添加这个名词空间,调用DataReceivedEventArg public class LoadPython : MonoBehaviour
{string sArguments = @"UnityLoad.py";//这里是python的文件名字// Use this for initializationvoid Start(){RunPythonScript(sArguments, "-u");}// Update is called once per framevoid Update(){RunPythonScript(sArguments, "-u");}public static void RunPythonScript(string sArgName, string args = ""){Process p = new Process();//python脚本的路径string path = @"F:\pythonBuffer\" + sArgName;string sArguments = path;//(注意:用的话需要换成自己的)没有配环境变量的话,可以像我这样写python.exe的绝对路径//(用的话需要换成自己的)。如果配了,直接写"python.exe"即可p.StartInfo.FileName = @"python.exe";//p.StartInfo.FileName = @"C:\Program Files\Python35\python.exe";// sArguments为python脚本的路径 python值的传递路线strArr[]->teps->sigstr->sArguments //在python中用sys.argv[ ]使用该参数p.StartInfo.UseShellExecute = false;p.StartInfo.Arguments = sArguments; p.StartInfo.RedirectStandardOutput = true;p.StartInfo.RedirectStandardInput = true;p.StartInfo.RedirectStandardError = true;p.StartInfo.CreateNoWindow = true;p.Start();p.BeginOutputReadLine();p.OutputDataReceived += new DataReceivedEventHandler (Out_RecvData);Console.ReadLine();p.WaitForExit();}static void Out_RecvData(object sender, DataReceivedEventArgs e){if (!string.IsNullOrEmpty(e.Data)) {UnityEngine.Debug.Log (e.Data);}}}
2 新建python脚本 UnityLoad.py
# -*- coding: utf-8 -*-PoemName = "杜甫《江畔独步寻花·其六》"
PoemTest = """
黄四娘家花满蹊,千朵万朵压枝低。
留连戏蝶时时舞,自在娇莺恰恰啼。
"""print(PoemName)
print(PoemTest)MottoEn = "A warm smile is the universal language of kindness."
MottoCh = "温暖的微笑是表示善意的通用语言。"print(MottoEn)
print(MottoCh)
3 运行unity调用
Ubuntu
1 Unity 工程和脚本
新建一个工程,并添加脚本RunPython.cs
using System.Collections;
using System;
using System.Collections.Generic;
using UnityEngine;
using System.Diagnostics; //需要添加这个名词空间,调用DataReceivedEventArg public class RunPython : MonoBehaviour
{string sArguments = @"UnityPython.py";//这里是python的文件名字// Use this for initializationvoid Start(){RunPythonScript(sArguments, "-u");}// Update is called once per framevoid Update(){RunPythonScript(sArguments, "-u");}public static void RunPythonScript(string sArgName, string args = ""){Process p = new Process();//python脚本的路径//string path = @"F:\BUFFER\PycharmBuffer\" + sArgName; string path = @"/home/michael/BUFFER/PycharmBuffer/" + sArgName;string sArguments = path;//文件目录的查询参考 https://blog.csdn.net/moonlightpeng/article/details/116195087?spm=1001.2014.3001.5501print("hello python");//(注意:用的话需要换成自己的)没有配环境变量的话,可以像我这样写python.exe的绝对路径//(用的话需要换成自己的)。如果配了,直接写"python.exe"即可p.StartInfo.FileName = @"/home/michael/.conda/envs/PVNet/bin/python";//注意Ubuntu系统pyhton后缀没有.exe//p.StartInfo.FileName = @"C:\Program Files\Python35\python.exe";// sArguments为python脚本的路径 python值的传递路线strArr[]->teps->sigstr->sArguments //在python中用sys.argv[ ]使用该参数p.StartInfo.UseShellExecute = false;p.StartInfo.Arguments = sArguments; p.StartInfo.RedirectStandardOutput = true;p.StartInfo.RedirectStandardInput = true;p.StartInfo.RedirectStandardError = true;p.StartInfo.CreateNoWindow = true;p.Start();p.BeginOutputReadLine();p.OutputDataReceived += new DataReceivedEventHandler (Out_RecvData);Console.ReadLine();p.WaitForExit();}static void Out_RecvData(object sender, DataReceivedEventArgs e){if (!string.IsNullOrEmpty(e.Data)) {UnityEngine.Debug.Log (e.Data);}}}
2 新建python脚本 UnityPython.py
# -*- coding: utf-8 -*-PoemName = "杜甫《客至》"
PoemTest = """
舍南舍北皆春水,但见群鸥日日来。
花径不曾缘客扫,蓬门今始为君开。
盘飧市远无兼味,樽酒家贫只旧醅。
肯于邻翁相对饮,隔离呼取尽馀杯。
"""print(PoemName)
print(PoemTest)MottoEn = "If you can't fly then run, if you can't run then walk, if you can't walk then crawl" \"but whatever you do you have to keep moving forward."
MottoCh = "如果不能飞,那就跑;如果跑不动,那就走;实在走不动了,那就爬。无论做什么,你都要勇往直前。"print(MottoEn)
print(MottoCh)
3 运行unity调用
注意事项:加载的python脚本名要写对,如果写错了竟然不会报错,仔细一点。
传参数通过unity到python参考
c#调用python的四种方法
Unity直接调用Python脚本相关推荐
- python c#_【分享】C# 调用 Python 脚本, 与 Python 调用 C# 类库
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 C# 调用 Python 脚本 操作步骤 1.创建一个控制台程序. O0101_DotNetCallPython. 2.管理 Nuget 程序包,搜索 I ...
- Java调用python脚本
Java调用python脚本 最近也是刚开始学python,所以这里写了一个简单的小方法用Java来调用python脚本.后期再进行更新. 1.Java启动程序的方法 在Java中提供了两种方法来启动 ...
- c++中调用python脚本提示 error LNK2001: 无法解析的外部符号 __imp_Py_Initialize等错误的解决方法
c++中调用python脚本提示 error LNK2001: 无法解析的外部符号 __imp_Py_Initialize等错误的解决方法 时间:2017-05-09 12:32:06阅读:234评论 ...
- excel调用python编程-如何在excel中调用python脚本
如何在excel中调用python脚本 发布时间:2020-07-03 14:15:28 来源:亿速云 阅读:155 如何在excel中调用python脚本?针对这个问题,这篇文章详细介绍了相对应的分 ...
- python调用exe程序 传入参数_关于使用c#调用python脚本文件,脚本文件需要传递参数...
最近工作中需要干这个事,网上搜了搜资料,改了改,基本是这样 建立一个控制台应用程序: 比如 加入我在命令行直接调用python脚本,命令为 y安装python后,添加环境变量,path下面,加入路径. ...
- linux下java调用python脚本,java - 在Linux Terminal中以编程方式从Java调用python脚本 - 堆栈内存溢出...
我正在开发一个Java应用程序,用于检查源文件中的补丁程序(是否存在). 用于检测补丁程序更改的核心逻辑位于python脚本[titled'patch.py']中,并且我的Java应用程序与此Py ...
- 【Python】如何在Excel中调用Python脚本,实现数据自动化处理
这次我们会介绍如何使用xlwings将Python和Excel两大数据工具进行集成,更便捷地处理日常工作. 说起Excel,那绝对是数据处理领域王者般的存在,尽管已经诞生三十多年了,现在全球仍有7.5 ...
- java代码调用python_java 直接调用python脚本,并传递参数代码实例|chu
最近陆续用python写了很多文件处理脚本,虽然功能都比较简单 ,但还是感觉到python对文件处理的简洁高效 ,越发觉得java的语法相当的繁琐~ 接到个需求处理ftp数据接口 .所以想把pytho ...
- java 调用python脚本过程_通过Java调用Python脚本
在进行开发的过程中,偶尔会遇到需要使用Java调用Python脚本的时候,毕竟Python在诸如爬虫,以及科学计算等方面具有天然的优势.最近在工作中遇到需要在Java程序中调用已经写好的Python程 ...
- python 调用控制台并获取返回结果_Java调用Python脚本并获取返回值
在Java程序中有时需要调用Python的程序,这时可以使用一般的PyFunction来调用python的函数并获得返回值,但是采用这种方法有可能出现一些莫名其妙的错误,比如ImportError.在 ...
最新文章
- [云框架]KONG API Gateway v1.5 -框架说明、快速部署、插件开发
- 20175212 《Java程序设计》第2周学习总结
- 编程之美-2.4 1的数目
- java 停止定时器_实例助解java定时器设置及停止的方法
- 微信小程序图片转换成文字_文字工作者必备 微信小程序图片转文字
- win10计算机名访问win7,实现Win10与Win7局域网共享,教你这招
- NVIDIA详细解读游戏中DX9与DX11差别
- 饥饿游戏[The Hunger Games]
- UNICODE与 UTF-8的转换详解
- java爬虫系列(三)——漫画网站爬取实战
- 【官方教程】ChatGLM-6B 微调,最低只需 7GB 显存
- 年产6000t乳制品工厂设计
- 最快的分布式关系型数据库MEMSQL
- Mac OSX中设置路由
- iOS 常用第三方库及插件
- 二、MMsegmentation 配置教程+训练教程+模型测试( 服务器)
- 【正点原子MP157连载】 第十章 U-boot使用-摘自【正点原子】【正点原子】STM32MP1嵌入式Linux驱动开发指南V1.7
- 微信小程序-提交表单成功弹窗提示
- 计算机组成原理二:系统总线——知识点和知识结构图
- ubuntu 18,问题总结
热门文章
- java 构造函数嵌套_java – spring – 构造函数注入和覆盖嵌套bean的父定义
- Java迭代器的一致_ArrayList中迭代器(Iterator)实现
- Matlab 嵌套传递函数简化_MATLAB的数据处理方法及图形绘制详解
- 巨人java生鲜app下载_Java生鲜电商平台-生鲜电商平台SSO(单点登陆)技术方案(小程序/APP)...
- JS魔法堂:LINK元素深入详解
- 用shc加密shell脚本
- DWR3.0 文件上传
- 路由器DHCP配置及中继配置
- Linux笔记17.数据完整性检测工具
- sql 2005 中分页