Unity + Python 环境搭建 您所在的位置:网站首页 unity怎么调用python Unity + Python 环境搭建

Unity + Python 环境搭建

#Unity + Python 环境搭建| 来源: 网络整理| 查看: 265

达芬奇开发告一段落,想开发的工具都已经完成了。坐等达芬奇更新了......

兴趣转移到了研究 Shader,找了各种资料,人手推荐冯大佬的《Unity Shader 入门精要》。在我还是一只菜鸡的情况下,完全做不到各种 shading language 切换自如,当然是大佬用啥我用啥。我同事痛心疾首质问我为何不去学 Unreal Engine 时我的回答。

背景

在:

-> “创建 GameObject 并重命名”

-> “创建 Material 并重命名”

-> “创建 Shader 并重命名”

-> “把 Shader 指给 Material”

-> “把 Material 赋给 GameObject” 

重复了三遍之后,作为一名Pipeline TD,根本就不能忍了,必须搞个工具一键完成上述步骤。

搜索 “Unity 插件开发”,emmm,C#?JavaScript?Boo?

C# 是不可能的,这辈子都不会去学 C# 的。

JS 嘛,想想我那 ugly 的前端代码,还是算了。

Boo 你是什么鬼?

这是瞧不起我大 Python 吗?

抱着试试看的心态搜索“Unity Python”,嚯!看我发现了什么,Unity 官方支持Python了

https://docs.unity3d.com/Packages/[email protected]/manual/

读完文档非常兴奋,这是官方专门为媒体娱乐行业(当然包括影视后期啦)无缝对接 Pipeline 量身打造,哇哦!简直就是在艾特我!苍蝇搓手中......但,额,怎么开始啊??

官方你敢把文档写全吗?能别把环境搭建藏在论坛的犄角旮旯里吗?浪费了大好青春终于拼凑出来......

https://forum.unity.com/threads/introducing-python-for-unity-editor.812748/

注意

Unity 版本必须 2019.3 及以上

Python 仅支持 2.7,并需要自行安装

Windows 的话系统要求是Win 10, 1803 以及以上

目前(2020/03/28)并不支持 Python 3,是考虑到影视后期行业目前还是大规模的 Python 2.7,且换 Python 3 喊了几年都没动静的事实上做的决定,但 Python 3的支持已经安排上了。如果你的电脑安装了Python 3,请将其从 PATH 中移除,否则可能会引起 Unity 崩溃。

安装

找到你工程中的 .../Packages/mainifest.json文件,在 dependencies 中加上 "com.unity.scripting.python": "2.0.1-preview.2",

你的 Unity 软件chua chua chua 就开始安装然后安装好了。

在菜单 Edit > Project Settings 中左栏就可以看到 Python for Unity 项,在页面中会显示当前的各种版本信息以及识别到你系统里的 Python

确定都没问题了昂。

Hello World - 1

Unity 中有两种执行 Python的方式,这不得不说跟达芬奇的尿性一模一样。

一种可以直接在软件内,开启 Python Console,就可以直接敲代码,脏乱差的工作都已经自动做好了,适合无需界面无需存储状态的工具,以及就是想先测试核心代码。

目前这个里面编辑器相当简陋,无代码高亮、补全,甚至最基本的代码写错了,都不会有报错提示的......

先试一下:执行菜单 Windows > General > Python Console,在下面的那个文本框中输入

import UnityEngineprint 'Hello World'UnityEngine.Debug.Log('Hello World')

然后点击 Excute 即可看到输出框中输出了"Hello World"。

输出结果

这里跟行业其他 DCC 软件的 Script Editor 非常像,比如,ctrl + enter 即可执行全部代码;选中部分代码,然后 ctrl+ enter 即可执行选中的代码。

Hello World - 2

第二种方式,适合搞起复杂工具,花哨 PySide 界面的那种,运行于 Unity 之外的。原理跟达芬奇的一样,启动 Unity 的时候,会悄咪咪启动一个子进程服务监听,然后你跟他通信这样。

我本人使用 PyCharm 作为主 IDE,所以就以它为例,为啥不用 VS Code? 因为我 PyCharm 是花钱买的。

新建一个工程,并且在 Project Structure 中添加 .../Library/PackageCache/[email protected]/Python/site-packages 这个路径,其实就是将 Unity 相关的模块加到 PYTHONPATH 的意思。

新建一个文件,输入以下内容,然后运行

service = unity_client.UnityClientService()connect = unity_client.connect(service)geo = service.UnityEngine.GameObject.CreatePrimitive(service.UnityEngine.PrimitiveType.Cylinder)geo.name = "myCylinder"# connect.close()

即可看到 Unity 场景中创建了个名字叫 myCylinder 的 Cylinder。

此时 Python 并没有退出,如果你想执行完就拍拍屁股走人,把上述最后一行去掉 # 即可,这里不展开说这是咋回事儿了。

今天作为一个环境搭建说明,已经够了,后续如何添加菜单,如何让Unity 去通知你的代码等等有机会再说。

这里有我的示例代码:https://github.com/muyr/hello_unity

文档

Python API 的文档何在?

抱歉现在没有,感觉将来也不会有......它完全是 C# API 的移植,所以,你就去参考 C# 的 API 文档吧,把 C# 的代码翻译成 Python,唉,说好这辈子都不学 C# 呢!

https://docs.unity3d.com/ScriptReference/ 

B站专栏不适合写有代码的技术文章,我精心排版的 Markdown 优雅卷面完全没了,还是需要放简书一份。

欢迎关注我的公众号“真的起名无力”

扫码关注公众号



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有