unity3d
멀티 플랫폼 개발
수색…
컴파일러 정의
컴파일러 정의는 플랫폼 특정 코드를 실행합니다. 그것들을 사용하면 다양한 플랫폼간에 작은 차이를 만들 수 있습니다.
- Android 기기에서 Apple 기기 및 Google Play 업적에서 게임 센터 업적을 트리거합니다.
- 메뉴의 아이콘을 변경하십시오 (Windows의 Windows 로고, Linux의 Linux Penguin).
- 아마도 플랫폼에 따라 특정 플랫폼 정비사가있을 수 있습니다.
- 그리고 훨씬 더 ...
void Update(){
#if UNITY_IPHONE
//code here is only called when running on iPhone
#endif
#if UNITY_STANDALONE_WIN && !UNITY_EDITOR
//code here is only ran in a unity game running on windows outside of the editor
#endif
//other code that will be ran regardless of platform
}
Unity 컴파일러 정의의 전체 목록은 여기에서 찾을 수 있습니다.
플랫폼 특정 메소드를 부분 클래스로 구성
부분 클래스 는 스크립트의 핵심 로직을 플랫폼 특정 메소드와 분리하는 명확한 방법을 제공합니다.
부분 클래스와 메소드는 partial
키워드로 표시됩니다. 이것은 컴파일러에게 클래스를 "열린"상태로 남겨두고 나머지 파일을 다른 파일에서 찾는다.
// ExampleClass.cs
using UnityEngine;
public partial class ExampleClass : MonoBehaviour
{
partial void PlatformSpecificMethod();
void OnEnable()
{
PlatformSpecificMethod();
}
}
이제 부분 메서드를 구현하는 플랫폼 별 스크립트 용 파일을 만들 수 있습니다. 부분 메소드는 매개 변수 ( ref
도 가능)를 가질 수 있지만 void
를 리턴해야합니다.
// ExampleClass.Iphone.cs
#if UNITY_IPHONE
using UnityEngine;
public partial class ExampleClass
{
partial void PlatformSpecificMethod()
{
Debug.Log("I am an iPhone");
}
}
#endif
// ExampleClass.Android.cs
#if UNITY_ANDROID
using UnityEngine;
public partial class ExampleClass
{
partial void PlatformSpecificMethod()
{
Debug.Log("I am an Android");
}
}
#endif
부분적인 메소드가 구현되지 않으면 컴파일러는 호출을 생략합니다.
팁 :이 패턴은 편집기 전용 메소드를 작성할 때도 유용합니다.
Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow