Unity中运行Python —集成— 解决可能会遇到的问题

这篇具有很好参考价值的文章主要介绍了Unity中运行Python —集成— 解决可能会遇到的问题。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

该文章旨在介绍如何在Unity中调用和执行Python程序。与以往只能事先运行Python程序不同,集成的方法可以根据Unity中某些参数的变化,自由的控制Python程序的开启。此外,我们还对过程中,可能会遇到的问题给出解决方法。

希望能帮助到你。✿✿ヽ(°▽°)ノ✿


一. 在Unity中引入Python模块

1. 打开文件

在Unity程序Assets同一目录下找到 Package 文件夹;以记事本方式打开 manifest.json 文件。
unity python,unity,python,游戏引擎,opencvunity python,unity,python,游戏引擎,opencv


2. 修改文件

添加一行 "com.unity.scripting.python": "5.0.0-pre.5", 注意有个逗号。保存之后回到Unity 等待自动安装相应的包。
unity python,unity,python,游戏引擎,opencv


3. Unity中的Python控制面板

Window/General/Python Console下打开 Python的控制面板。如果可以到这一步,就说明接口安装成功。
unity python,unity,python,游戏引擎,opencv


4. 测试一下

上方是结果输出台,下方是python脚本编写区域。点击“Execute”执行脚本。
当然,脚本也可以外部获得,点击“Load”,选择你要添加的Python脚本即可。
unity python,unity,python,游戏引擎,opencv


二. 在Unity中脚本调用Python

1. 存放Python文件夹

在Unity程序中,新建一个用于存放Python程序的文件夹。本文中python的路径如下。
unity python,unity,python,游戏引擎,opencv
该脚本的代码如下,其功能是找到Unity中的Para物体并修改它的名字。
如果,在运行时报错:‘gbk‘ codec can‘t decode byte 0x80 ,快去看 3.1小节。

import UnityEngine as ue  #这个会划红线报错,不用管
object =ue.Object.FindObjectsOfType(ue.GameObject) #获取Unity中所有的GameObject类型
for go in object:
    if go.name =="Para": #找到一个名字是“Para”物体 就把它的名字改成“123”
        go.name="123"
    else:
        ue.Debug.Log(go.name) # 在Unity的控制台中输出物体的名字

2. Unity调用

① 引入头文件:using UnityEditor.Scripting.Python;
② 获取Python文件路径:string python_path = Application.dataPath + "/Python/Python_Unity.py";
③ 设置开启条件:我们以按下键盘A键为例。
④ 运行Python文件:调用 PythonRunner.RunFile

整体的代码如下。回到Unity中运行,当按下A键后,场景中名为“Para”的物体,名字被修改为“123”。

void Update()
    {
        if (Input.GetKeyDown(KeyCode.A))
        {
            string python_path = Application.dataPath + "/Python/Text_Sentiment.py";
            PythonRunner.RunFile(python_path);
        }
    }

至此,在脚本中如何运行Python程序已介绍完毕。
但是,在实际的应用中还有一些问题,我们在下一章节展开。


三. 实操中的问题

1. 运行Python文件中出现的 gbk 问题

在运行时可能会报错:UnicodeDecodeError: ‘gbk‘ codec can‘t decode byte 0x80 in position 0: illegal multibyte sequence

这个错误我是真的会谢!(秃头…)

解决方法:Python文件中的所有注释全部删除,即无“井号键 ”。


2. com.unity.scripting.python 版本

在 1.2 节中,我们下载的 unity.scripting.python 是 5.0.0版本,在Unity里安装的Python版本为3.9,并且这个是不能更改的。在 Project Setting/ Python Scripting 可以查看详细信息。如果你想更改其他版本可以参考这个链接 Using Python in Unity 。

unity python,unity,python,游戏引擎,opencv


3. 程序之前运行的环境 和 Unity中Python环境不一致

通常来说,想要在Unity中调用的Python程序(记为,A.py),我们都事先在Pycharm中的某个Python 环境下运行成功了(假设,A.py在Python=3.6中成功运行)。此外,它可能还依附了其他包,这些包需要与python版本对应起来,才能正常的运行。

所以,A.py 直接在Unity的python=3.9 环境下运行可能会报错。此外,程序里需要的包在Unity下的环境中都是没有的。因为,现在的程序都依赖于一个sit-package 即 Assets/sit-package


为解决这个问题,我认为有三种方法:

① 在Unity的Python=3.9环境下,重新 pip install 需要的包;

在Python Scripting面板下点击 Spawn shell in enviorment ,包的安装与配置Python一致。

注意
这种方法或许有效,但是可能还是会有错,因为毕竟是在Unity下去安装包。可能会因为Unity平台自身的原因出错。我在尝试的时候,导入某个包的时候会一直报错(具体是哪个忘记了> <)。所以,大家可以试一下后面两种方法。

unity python,unity,python,游戏引擎,opencv
unity python,unity,python,游戏引擎,opencv


② 添加site-package;

假设,A.py是在Python=3.6中运行,则添加正常运行A.py的python=3.6的环境下的sit-package。
把路径复制到 Python Scripting面板下,重启Unity生效。

注意:
这个方法,基本上没有问题,比较推荐。
但是当你在运行多个Python程序时,可能每个程序的环境都不一样,这就需要添加多个site-package。在Unity脚本执行 PythonRunner.RunFile时,可能会先执行 Element 1路径下的site-package,如果不是对应的环境信息还是会报错。这里我就没有细究PythonRunner能否指定site-package的功能了。直接开搞第三个方法!一劳永逸!

unity python,unity,python,游戏引擎,opencv
unity python,unity,python,游戏引擎,opencv


③ 重新创建一个python=3.9的环境;
最后,我自己在Unity执行Python时,还是采用了最后一种方法。在conda 下新建了一个虚拟环境,且在python=3.9版本下配置环境。然后,在把这个环境对应的site-package添加到 ②中提及的路径中。

我用这个方法实现了自己想要达到的功能。
所以,大家还是根据 A.py的实际情况,来选择解决方法吧。
最后,有什么问题欢迎大家留言交流哦~


写在最后
今年过的好快啊,我也希望自己能成功,加油吧!文章来源地址https://www.toymoban.com/news/detail-784864.html

到了这里,关于Unity中运行Python —集成— 解决可能会遇到的问题的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • Unity 安装Vuforia配置Android时遇到的问题及解决

    在做AR作业的时候,我遇到的最大的困难是配置环境。下面我说明下在配置环境中可以避免报错的方法,希望能帮助遇到问题的人。 unity版本: Unity 2019.4.38f1c1 在老师分享的实验报告里,有一个方法是:修改manifest.json文件,从第三行开始添加一行字\\\"com.ptc.vuforia.engine\\\":\\\"8.5.9\\\",

    2024年02月02日
    浏览(35)
  • Unity SpriteAtlas 打图集流程,与遇到的问题和解决方法

    在unity里面使用 SpriteAtlas ,把需要用到的游戏贴图资源,创建成对应的图集。 贴图资源没有打进包里面,如果以文本的方式打开图集,会发现文本里面关于m_PackedSprites的数组和m_PackedSpriteNamesToIndex的数组都是为空的,没有值在里面,没有值的这两个变量,是用不了对应的贴图

    2024年02月16日
    浏览(34)
  • unity webgl网页运行后屏幕模糊,UI无响应问题解决

    【记一个莫名其妙的问题】 工具:Unity 2019.4.40f1c1 先前Unity打包apk,设置了最大帧率15 在Project Settings -Quality中设置了Other-VSync Count:Don’t Sync 运行后,帧率稳定在100上下,呵呵 后来在代码中加了一行: 问题解决 今天,准备再打一个webgl包 打包运行后,打开网页,画面停留在

    2024年02月06日
    浏览(29)
  • 路由器升级可能遇到的问题及解决办法

    一、出现乱码 拿出路由器,通电后通过Console口连上去,发现超级屏幕出现了一些乱码,会不会是Consol口坏了?如果出现Console口坏了,一般会在超级终端屏幕上不断输出很多的乱码,回车后出现乱码,可能是每秒传输速率不对,将默认值9600更换为l15200,路由器启动成功,路由

    2024年02月05日
    浏览(27)
  • 解决:“Unity打包非全屏游戏,运行时仍然全屏” 的问题

    前言          我们在使用Unity做游戏的时候,会碰到一些需要固定分辨率的游戏,可是有时候在固定了分辨率以后,打包出来的项目却一直都是全屏的,那么有什么方法解决呢? 固定分辨率         首先需要固定分辨率,我们可以从左上角 File → Build Settings → Playe

    2024年02月05日
    浏览(110)
  • Python: Django 服务部署可能遇到的一些问题

    不要用 python3 manage.py runserver 启动服务, 而要用: 此外,在 setting.py 中,修改: 在 setting.py 中,修改: 其中,域名有无 https:// 均可 此外,在 应用名/views.py 中,修改: 运行: 在 script 中,声明 WebSocket 时,注意 https 与 wss 对应,http 与 ws 对应:

    2024年02月14日
    浏览(33)
  • Android 使用modbus协议与可能遇到的问题解决一览

    本篇文章主要演示android的串口通讯功能,其中需要使用serialport模块(下载链接),注意: 串口通讯需要root权限,需要将应用设置成‘android:sharedUserId=“android.uid.system”’即可,如果出现串口通讯无法访问设备,首先看串口名称与波特率是否一致,如果都一致看看是否是打开串口

    2024年02月14日
    浏览(33)
  • Unity关于无法新建项目的可能解决办法

    PISCOMAI ,1 年前 发布于异常报错 有的朋友无法新建项目,可能会闪退,卡在新建界面加载,路径不存在等错误,下面我为大家提供几个解决办法,请大家逐一尝试,并希望在该帖子下留下你们的问题与解决办法,帮助其他开发者!!! 1 尝试退出登录然后重新登陆 2 有开发者

    2023年04月10日
    浏览(26)
  • Unity发布web遇到的问题

    1.WebGL 报错 Uncaught RuntimeError: float unrepresentable in integer range   2.报 Maximum call stack size exceeded 超出最大调用堆栈大小 原因1:深拷贝 递归复制  遇到循环引用时 堆栈会一直增长,直到达到限制 原因2:进入了死循环,比如自身调用自身 善用ctrl+F5刷新清除缓存!! 3.unity发布webgl后

    2024年02月03日
    浏览(26)
  • Ubuntu20.04安装sql server(内含多个可能遇到的问题以及解决方法)

    这学期的课程有数据库,因此今天(2022.3.6)在ubuntu上安装了sql server2019 即使根据官方指引进行安装也会遇到不少问题,因此为在这里总结了我自己遇到的所有问题,以及给出了相应的解决方案,希望能为后来的人解决一些困惑和麻烦 根据指引,在终端输入第一条语句:(导入

    2024年02月05日
    浏览(40)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包