2016-07-30 5 views
0

누구나 텍스쳐 아틀라스를 미리로드하는 Xamarin.iOS 프레임 워크 내의 C#으로 작성된 작은 코드 샘플을 보여 주시겠습니까?Xamarin.iOS에서 텍스처 아틀라스 (SKTextureAtlas)를 사전로드하는 방법 (C#)?

해당 웹 페이지에 https://developer.xamarin.com/api/type/MonoTouch.SpriteKit.SKTextureAtlas/

, 그들은 텍스처지도 책을 미리로드 많은 방법을 나열 :

자 마린 웹 사이트는이 페이지가 있습니다. 그러나, 나는이 2 특정 방법에만 관심이 :

PreloadTextures (SKTextureAtlas [], NSAction)

PreloadTexturesAsync (SKTextureAtlas []) 나는 두 방법 모두 잘 작동합니다 생각

내 게임. 불행히도 Xamarin.iOS 프레임 워크 내에서 C#으로 올바르게 호출하는 방법을 모르겠습니다.

웹상의 텍스쳐 아틀라스를 미리로드하기위한 코드 샘플이 많이 있지만이 샘플은 Objective-C로 작성되었으며, 불행히도 Objective-C 코드를 C# 코드로 변환하는 방법을 아직 모릅니다.

위에서 언급 한 두 가지 방법을 사용하여 텍스쳐 탭을 미리로드하는 Xamarin.iOS 프레임 워크에서 C#으로 작은 코드 샘플을 작성하는 방법을 보여 주시면 감사하겠습니다.

대단히 감사합니다.

답변

1

저는 게임 개발에 대한 전문가도 아니며 이전에 참여한 적이 없지만 Objective-C 코드를 Xamarin C# 코드로 "변환"하는 일은 Xamarin.iOS에 상당히 익숙합니다.

먼저 당신이

var textureCollection = new SKTextureAtlas[] 
{ 
    SKTextureAtlas.FromName("firsttexturename"), 
    SKTextureAtlas.FromName("secondtexturename"), 
}; 
await SKTextureAtlas.PreloadTexturesAsync(textureCollection); 
// rather than using a completion handler like in ObjC xamarin uses the c# 5's await keyword to achieve similar functions 
//You can do what you want after it has preloaded here 
//for example 
this.StartScene() 
+0

이 우수한 답변을 주셔서 대단히 감사합니다 배열은 "텍스처 아틀라스"를 작성해야합니다. 오늘 귀하의 코드를 시험해보고 "답변 됨"이라고 표시합니다. BTW, 완료 처리기 "PreloadTextures (SKTextureAtlas [], NSAction)"메서드를 사용하는 경우 궁금하다, 그것은 여전히 ​​preloading 진행중인 동안 텍스트 메시지를 인쇄 같은 몇 가지 다른 작업을 수행 할 수 있다는 뜻입니까? 또는 미리로드가 진행되는 동안 코드에서 다른 작업을 수행 할 수 없다는 의미입니까? (다시 한번 감사드립니다.) – Thanh

+0

Apple 문서에서 읽은 바에 따르면,이 메소드는 백그라운드에서 실행됩니다. xamarin 비동기 메소드는 단순히 래퍼이며 주위에 NSAction 호출을 사용할 수 없습니다 기구. 또는 Task.ContinueWith를 사용하여 C# 환경에 머물 수도 있습니다. –

+0

귀하의 설명은 정확합니다. C# 및 iOS의 모든 비동기/대기 메서드는 백그라운드에서 실행되며 프로그램이나 응용 프로그램의 흐름을 차단하지 않습니다. 오늘 코드를 시험해보고 완벽하게 잘 작동합니다. 저건 환상적인 거지. 도와 주셔서 정말 감사합니다. (Stackoverflow는 멋진 포럼입니다 :-)) – Thanh