首页 > 编程语言 > 详细

Python调用Unity工程下CSharp代码中的静态方法

时间:2021-04-19 23:04:09      阅读:51      评论:0      收藏:0      [点我收藏+]

基本原理:命令行启动Unity,然后执行对应的类中的静态方法。

unity命令行参数简介:https://my.oschina.net/mbreath/blog/759480

Unity工程目录:

D:\0_lugsProjects\XLua\xlua

Unity安装目录:

D:\1_WorkSoftware\Unity2017.2.0p4\Unity\Editor\Unity.exe

编写CShrap代码:

 1 using UnityEditor;
 2 using UnityEngine;
 3 
 4 public class EditorMenu
 5 {
 6     [MenuItem("Test/测试Python调用Unity方法")]
 7     public static void TestPythonUnity()
 8     {
 9         Debug.Log("测试Python调用Unity方法");
10     }
11 }

运行之后,将“测试Python调用Unity方法”这句话写入log文件。

编写Python脚本:

 1 import os
 2 import subprocess
 3 import psutil
 4 
 5 #判断进程是否正在运行
 6 def Exist(process_name):
 7     pl = psutil.pids()
 8     for pid in pl:
 9         if psutil.Process(pid).name() == process_name:
10             return pid
11 
12 #杀掉运行中的Unity
13 def KillUnity():
14     if isinstance(Exist("Unity.exe"),int):
15         os.system("taskKill /F /IM Unity.exe")
16     else:
17         print(no such process...)
18 
19 def ExcuteUnityMethod():
20     unityPath = "D:\\1_WorkSoftware\\Unity2017.2.0p4\\Unity\\Editor\\Unity.exe"
21     logFilePath = "D:\\0_lugsProjects\\Python\\Log_PythonUnity.txt"
22     projectPath = "D:\\0_lugsProjects\\XLua\\xlua"
23     className = "EditorMenu"
24     methodName = "TestPythonUnity"
25     cmd = "%s -quit -batchmode -logFile %s -projectPath %s -executeMethod %s.%s" % (unityPath,logFilePath,projectPath,className,methodName)
26     #print(cmd)
27     subprocess.Popen(cmd)
28 
29 def Main():
30     KillUnity()
31     ExcuteUnityMethod()
32 
33 Main()
34 
35 input("Enter any key ...")

注意:psutil是一个模块,需要单独安装。以下网址为其介绍。

https://www.liaoxuefeng.com/wiki/1016959663602400/1183565811281984

运行python脚本结果的部分截图:

技术分享图片

 

 

可以看到CSharp代码中的方法被正确执行了。

Python调用Unity工程下CSharp代码中的静态方法

原文:https://www.cnblogs.com/luguoshuai/p/14678314.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!