유니티에서python을 사용하는 매력과 사용법을 총결하였다
15241 단어 Python2UnityPythonIronPython
왜 유니티에서python을 사용하고 싶어요?
이것은 단지 나의 개인적인 의견일 뿐이다.
유니티를 사용했기 때문에.
개인적으로 유니티를 좋아하니까.VR, AI가 주목받는 현재 유니티와python은 수요가 증가할 것이라고 생각한다.
그 두 가지를 조합할 수 있다는 것은 매우 매력적이다.
GUI에서 python 변수의 내용을 변경할 수 있습니다.
유니티의 Serialize Field를 사용하면 유니티의 검사기 창에서 변수의 내용을 설정할 수 있습니다.
python에서, 예를 들어 기계 학습 파라미터를 변경해야 할 때, 굳이 파일을 열지 않아도 검사기 창에서 내용을 삭제하기 편리합니다.
유니티 화면에서python의 연산 결과를 간단명료하게 표시할 수 있다
또한 유니티는 게임과 직관적인 응용 프로그램 제작에도 뛰어나다.
'python으로 하여금 기계 학습 등을 하게 하는 연산, 그 결과에 따라 서로 다른 동작을 일으키는 유니티 게임'등을 만들 수도 있다.
ironpython이python2인가python3인가
공식 사이트에서 날아보기github 페이지
python2,python3 둘 다 있고 ironpython3는'Do NOT USE'가 있습니다.ironpython3.
아직 충분히 사용하지 않은 상태인 것 같습니다.
앞으로를 기대하다.
설치 방법
kitao's blog선생님 참고
↑
무사히 마쳤습니다.cs 스크립트를 GameObject에 추가하는 것을 잊지 마십시오.
프로그램 예
객체 생성
인터넷 블로그선생님 참고
python 코드에서 다음과 같이 변경합니다
test.txt
#!/usr/bin/env python
import clr
clr.AddReferenceByPartialName('UnityEngine')
import UnityEngine
from UnityEngine import *
def call_test():
go = GameObject()
go.name = 'pokemon'
rigidbody = go.AddComponent( Rigidbody )
rigidbody.isKinematic = True
call_test()
포켓몬 개체 생성 확인 및 Rigidbody 추가
.net 사용 라이브러리
각양각색의 비망록 일기선생님 참고
test.txt
#!/usr/bin/env python
import clr
clr.AddReferenceByPartialName('UnityEngine')
import UnityEngine
from UnityEngine import *
import System as _s
def print_message():
#OSVersion is Microsoft Windows NT **.*.* ****.*を出力
Debug.Log("OSVersion is " + str(_s.Environment.OSVersion))
print_message()
겸사겸사 말씀드리지만, Debug.로그의 함수에서
Debug.Log("OSVersion is " + _s.Environment.OSVersion)
다음 오류가 발생했습니다.TypeErrorException: unsupported operand type(s) for +: 'str' and 'OperatingSystem'
python의 기호에 따라 UnityEngine을 호출해야 합니다.
값 전달(외부 객체 협업)
SetVariable을 사용하면 python 측면에서 C# 내의 클래스와 변수 등을 처리할 수 있습니다
참조(hatena (diary ’Nobuhisa)) 다음 파일 만들기
python 호출
Callpython.cspublic class CallPython : MonoBehaviour {
// Use this for initialization
void Start () {
TestPython test = new TestPython();
TestComponent componentPython = GameObject.Find("TestObject").GetComponent<TestComponent>();
private int num = 2; //同スコープ内ならprivate型でも呼び出せる
var script = Resources.Load<TextAsset>("test").text;
var scriptEngine = IronPython.Hosting.Python.CreateEngine();
var scriptScope = scriptEngine.CreateScope();
scriptScope.SetVariable("TestPython",test); //testクラスをTestPythonとしてpythonで扱えるようにする
scriptScope.SetVariable("TestComponent",componentPython); //GameObjectを扱うことも可能
scriptScope.SetVariable("num", num);
var scriptSource = scriptEngine.CreateScriptSourceFromString(script);
scriptSource.Execute(scriptScope);
}
}
TestPython.cspublic class TestPython : MonoBehaviour {
private string title = "Hello Uniity";
public string Title
{
get
{
return title;
}
set
{
title = value;
}
}
public void ShowTitle()
{
Debug.Log(title);
}
}
TestComponet.cspublic class TestComponent : MonoBehaviour {
[SerializeField]
public string title;
public void ShowTitle()
{
Debug.Log(title);
}
}
python 사이드 프로그램
test.txtimport clr
clr.AddReferenceByPartialName('UnityEngine')
import UnityEngine
from UnityEngine import *
def call_unity():
Debug.Log(TestComponent.title) #インスペクターに登録されてあるパラメータの確認
Debug.Log(TestPython.Title) #TestPython内の変数の中身を確認
TestPython.Title = "Hello Python" #TestPython内の変数の中身を書き換える
TestPython.ShowTitle() #関数呼び出し
Debug.Log("num is " + str(num)) #
call_unity()
유니티 방면에서 다음과 같이 실시하다
1. 테스트 대상 생성
2. TestObject에서 TestComponentcs 추가
3. 추가된 Test Component.검사기에서 cs 제목 다시 쓰기
실행 결과
※ 참고로python 측에서 C#측 클래스를 처리하면'그런 변수가 없습니다'오류가 발생합니다.#!/usr/bin/env python
import clr
clr.AddReferenceByPartialName('UnityEngine')
import UnityEngine
from UnityEngine import *
def call_unity():
testObject = GameObject.Find("TestObject")
testScript = testObject.GetComponent<TestPython>()
Debug.Log("[Python] Title is " + testScript.Title());
call_unity()
UnboundNameException: global name 'TestPython' is not defined
IronPython.Runtime.Operations.PythonOps.GetVariable (IronPython.Runtime.CodeContext context, System.String name, Boolean isGlobal, Boolean lightThrow)
IronPython.Compiler.LookupGlobalInstruction.Run (Microsoft.Scripting.Interpreter.InterpretedFrame frame)
Microsoft.Scripting.Interpreter.Interpreter.Run (Microsoft.Scripting.Interpreter.InterpretedFrame frame)
python 외부 라이브러리 사용하기
따라서,python 방면에서libsvm를 처리하려고 합니다
참조 와----!!!
아무도 모르는 비망록
순탄치 않다.ironpython은libsvm를 지원하지 않는 것 같습니다.
ironpython에서python 실행
subprocess는popen만 지원하는 것 같습니다.
기타
ironpython에서는 C#에서 만든 dll 파일참고 자료을 읽을 수 있습니다.
참고 자료
공식.
인터넷 블로그 선생님
Reference
이 문제에 관하여(유니티에서python을 사용하는 매력과 사용법을 총결하였다), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/yjiro0403/items/58c2693b8882baf3b5cf
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
공식 사이트에서 날아보기github 페이지
python2,python3 둘 다 있고 ironpython3는'Do NOT USE'가 있습니다.ironpython3.
아직 충분히 사용하지 않은 상태인 것 같습니다.
앞으로를 기대하다.
설치 방법
kitao's blog선생님 참고
↑
무사히 마쳤습니다.cs 스크립트를 GameObject에 추가하는 것을 잊지 마십시오.
프로그램 예
객체 생성
인터넷 블로그선생님 참고
python 코드에서 다음과 같이 변경합니다
test.txt
#!/usr/bin/env python
import clr
clr.AddReferenceByPartialName('UnityEngine')
import UnityEngine
from UnityEngine import *
def call_test():
go = GameObject()
go.name = 'pokemon'
rigidbody = go.AddComponent( Rigidbody )
rigidbody.isKinematic = True
call_test()
포켓몬 개체 생성 확인 및 Rigidbody 추가
.net 사용 라이브러리
각양각색의 비망록 일기선생님 참고
test.txt
#!/usr/bin/env python
import clr
clr.AddReferenceByPartialName('UnityEngine')
import UnityEngine
from UnityEngine import *
import System as _s
def print_message():
#OSVersion is Microsoft Windows NT **.*.* ****.*を出力
Debug.Log("OSVersion is " + str(_s.Environment.OSVersion))
print_message()
겸사겸사 말씀드리지만, Debug.로그의 함수에서
Debug.Log("OSVersion is " + _s.Environment.OSVersion)
다음 오류가 발생했습니다.TypeErrorException: unsupported operand type(s) for +: 'str' and 'OperatingSystem'
python의 기호에 따라 UnityEngine을 호출해야 합니다.
값 전달(외부 객체 협업)
SetVariable을 사용하면 python 측면에서 C# 내의 클래스와 변수 등을 처리할 수 있습니다
참조(hatena (diary ’Nobuhisa)) 다음 파일 만들기
python 호출
Callpython.cspublic class CallPython : MonoBehaviour {
// Use this for initialization
void Start () {
TestPython test = new TestPython();
TestComponent componentPython = GameObject.Find("TestObject").GetComponent<TestComponent>();
private int num = 2; //同スコープ内ならprivate型でも呼び出せる
var script = Resources.Load<TextAsset>("test").text;
var scriptEngine = IronPython.Hosting.Python.CreateEngine();
var scriptScope = scriptEngine.CreateScope();
scriptScope.SetVariable("TestPython",test); //testクラスをTestPythonとしてpythonで扱えるようにする
scriptScope.SetVariable("TestComponent",componentPython); //GameObjectを扱うことも可能
scriptScope.SetVariable("num", num);
var scriptSource = scriptEngine.CreateScriptSourceFromString(script);
scriptSource.Execute(scriptScope);
}
}
TestPython.cspublic class TestPython : MonoBehaviour {
private string title = "Hello Uniity";
public string Title
{
get
{
return title;
}
set
{
title = value;
}
}
public void ShowTitle()
{
Debug.Log(title);
}
}
TestComponet.cspublic class TestComponent : MonoBehaviour {
[SerializeField]
public string title;
public void ShowTitle()
{
Debug.Log(title);
}
}
python 사이드 프로그램
test.txtimport clr
clr.AddReferenceByPartialName('UnityEngine')
import UnityEngine
from UnityEngine import *
def call_unity():
Debug.Log(TestComponent.title) #インスペクターに登録されてあるパラメータの確認
Debug.Log(TestPython.Title) #TestPython内の変数の中身を確認
TestPython.Title = "Hello Python" #TestPython内の変数の中身を書き換える
TestPython.ShowTitle() #関数呼び出し
Debug.Log("num is " + str(num)) #
call_unity()
유니티 방면에서 다음과 같이 실시하다
1. 테스트 대상 생성
2. TestObject에서 TestComponentcs 추가
3. 추가된 Test Component.검사기에서 cs 제목 다시 쓰기
실행 결과
※ 참고로python 측에서 C#측 클래스를 처리하면'그런 변수가 없습니다'오류가 발생합니다.#!/usr/bin/env python
import clr
clr.AddReferenceByPartialName('UnityEngine')
import UnityEngine
from UnityEngine import *
def call_unity():
testObject = GameObject.Find("TestObject")
testScript = testObject.GetComponent<TestPython>()
Debug.Log("[Python] Title is " + testScript.Title());
call_unity()
UnboundNameException: global name 'TestPython' is not defined
IronPython.Runtime.Operations.PythonOps.GetVariable (IronPython.Runtime.CodeContext context, System.String name, Boolean isGlobal, Boolean lightThrow)
IronPython.Compiler.LookupGlobalInstruction.Run (Microsoft.Scripting.Interpreter.InterpretedFrame frame)
Microsoft.Scripting.Interpreter.Interpreter.Run (Microsoft.Scripting.Interpreter.InterpretedFrame frame)
python 외부 라이브러리 사용하기
따라서,python 방면에서libsvm를 처리하려고 합니다
참조 와----!!!
아무도 모르는 비망록
순탄치 않다.ironpython은libsvm를 지원하지 않는 것 같습니다.
ironpython에서python 실행
subprocess는popen만 지원하는 것 같습니다.
기타
ironpython에서는 C#에서 만든 dll 파일참고 자료을 읽을 수 있습니다.
참고 자료
공식.
인터넷 블로그 선생님
Reference
이 문제에 관하여(유니티에서python을 사용하는 매력과 사용법을 총결하였다), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/yjiro0403/items/58c2693b8882baf3b5cf
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
객체 생성
인터넷 블로그선생님 참고
python 코드에서 다음과 같이 변경합니다
test.txt
#!/usr/bin/env python
import clr
clr.AddReferenceByPartialName('UnityEngine')
import UnityEngine
from UnityEngine import *
def call_test():
go = GameObject()
go.name = 'pokemon'
rigidbody = go.AddComponent( Rigidbody )
rigidbody.isKinematic = True
call_test()
포켓몬 개체 생성 확인 및 Rigidbody 추가
.net 사용 라이브러리
각양각색의 비망록 일기선생님 참고
test.txt
#!/usr/bin/env python
import clr
clr.AddReferenceByPartialName('UnityEngine')
import UnityEngine
from UnityEngine import *
import System as _s
def print_message():
#OSVersion is Microsoft Windows NT **.*.* ****.*を出力
Debug.Log("OSVersion is " + str(_s.Environment.OSVersion))
print_message()
겸사겸사 말씀드리지만, Debug.로그의 함수에서
Debug.Log("OSVersion is " + _s.Environment.OSVersion)
다음 오류가 발생했습니다.TypeErrorException: unsupported operand type(s) for +: 'str' and 'OperatingSystem'
python의 기호에 따라 UnityEngine을 호출해야 합니다.값 전달(외부 객체 협업)
SetVariable을 사용하면 python 측면에서 C# 내의 클래스와 변수 등을 처리할 수 있습니다
참조(hatena (diary ’Nobuhisa)) 다음 파일 만들기
python 호출
Callpython.cs
public class CallPython : MonoBehaviour {
// Use this for initialization
void Start () {
TestPython test = new TestPython();
TestComponent componentPython = GameObject.Find("TestObject").GetComponent<TestComponent>();
private int num = 2; //同スコープ内ならprivate型でも呼び出せる
var script = Resources.Load<TextAsset>("test").text;
var scriptEngine = IronPython.Hosting.Python.CreateEngine();
var scriptScope = scriptEngine.CreateScope();
scriptScope.SetVariable("TestPython",test); //testクラスをTestPythonとしてpythonで扱えるようにする
scriptScope.SetVariable("TestComponent",componentPython); //GameObjectを扱うことも可能
scriptScope.SetVariable("num", num);
var scriptSource = scriptEngine.CreateScriptSourceFromString(script);
scriptSource.Execute(scriptScope);
}
}
TestPython.cspublic class TestPython : MonoBehaviour {
private string title = "Hello Uniity";
public string Title
{
get
{
return title;
}
set
{
title = value;
}
}
public void ShowTitle()
{
Debug.Log(title);
}
}
TestComponet.cspublic class TestComponent : MonoBehaviour {
[SerializeField]
public string title;
public void ShowTitle()
{
Debug.Log(title);
}
}
python 사이드 프로그램test.txt
import clr
clr.AddReferenceByPartialName('UnityEngine')
import UnityEngine
from UnityEngine import *
def call_unity():
Debug.Log(TestComponent.title) #インスペクターに登録されてあるパラメータの確認
Debug.Log(TestPython.Title) #TestPython内の変数の中身を確認
TestPython.Title = "Hello Python" #TestPython内の変数の中身を書き換える
TestPython.ShowTitle() #関数呼び出し
Debug.Log("num is " + str(num)) #
call_unity()
유니티 방면에서 다음과 같이 실시하다1. 테스트 대상 생성
2. TestObject에서 TestComponentcs 추가
3. 추가된 Test Component.검사기에서 cs 제목 다시 쓰기
실행 결과
※ 참고로python 측에서 C#측 클래스를 처리하면'그런 변수가 없습니다'오류가 발생합니다.
#!/usr/bin/env python
import clr
clr.AddReferenceByPartialName('UnityEngine')
import UnityEngine
from UnityEngine import *
def call_unity():
testObject = GameObject.Find("TestObject")
testScript = testObject.GetComponent<TestPython>()
Debug.Log("[Python] Title is " + testScript.Title());
call_unity()
UnboundNameException: global name 'TestPython' is not defined
IronPython.Runtime.Operations.PythonOps.GetVariable (IronPython.Runtime.CodeContext context, System.String name, Boolean isGlobal, Boolean lightThrow)
IronPython.Compiler.LookupGlobalInstruction.Run (Microsoft.Scripting.Interpreter.InterpretedFrame frame)
Microsoft.Scripting.Interpreter.Interpreter.Run (Microsoft.Scripting.Interpreter.InterpretedFrame frame)
python 외부 라이브러리 사용하기
따라서,python 방면에서libsvm를 처리하려고 합니다
참조 와----!!!
아무도 모르는 비망록
순탄치 않다.ironpython은libsvm를 지원하지 않는 것 같습니다.
ironpython에서python 실행
subprocess는popen만 지원하는 것 같습니다.
기타
ironpython에서는 C#에서 만든 dll 파일참고 자료을 읽을 수 있습니다.
참고 자료
공식.
인터넷 블로그 선생님
Reference
이 문제에 관하여(유니티에서python을 사용하는 매력과 사용법을 총결하였다), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/yjiro0403/items/58c2693b8882baf3b5cf
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
공식.
인터넷 블로그 선생님
Reference
이 문제에 관하여(유니티에서python을 사용하는 매력과 사용법을 총결하였다), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/yjiro0403/items/58c2693b8882baf3b5cf텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)