Game Center is het sociale gaming-netwerk van Apple. Hiermee kunnen gebruikers hun hoge scores op een scorebord bijhouden, prestaties vergelijken, vrienden uitnodigen om een game te spelen en een multiplayer-game starten via automatisch matchen. Dus als je een iOS-game hebt gebouwd en wilt dat gebruikers hun scores kunnen posten op een Game Center-scorebord, dan is dit de juiste tutorial voor jou!
Ga naar de Apple Developer-pagina voor meer informatie over apps en het Game Center.
Voor deze tutorial heb ik een eenvoudig Xcode-project gemaakt dat je kunt downloaden van GitHub. Ik zal alle nodige stappen uitleggen om een scorebord op iTunes Connect en de benodigde code te maken om een score in te dienen, samen met een knop om het scorebord te openen vanuit de app.
Zo ziet het Storyboard van de app eruit:
Dit project heeft een UILabel met rode tekst die ik heb gebeld scoreLabel
en een paar UIButtons. De rode voegt 10 punten toe aan de score en legt deze voor aan een Game Center-leaderboard, en de blauwe opent de GKGameCenterViewController en laat dat leaderboard zien.
Het allereerste dat u moet doen, is inschakelen Game Center in de mogelijkheden tab in Xcode.
Vervolgens moet u GameKit bovenaan uw computer importeren ViewController.swift bestand en voeg de GKGameCenterControllerDelegate
protocol bij de klassenverklaring.
GameKit-klasse importeren ViewController: UIViewController, GKGameCenterControllerDelegate
Laten we nu een paar variabelen toevoegen. Je kunt deze code gewoon in je plakken ViewController
klasse:
/ * Variabelen * / var gcEnabled = Bool () // Controleer of de gebruiker Game Center ingeschakeld heeft var gcDefaultLeaderBoard = String () // Controleer de standaard leaderboardID var score = 0 // BELANGRIJK: vervang de rode string hieronder door uw eigen Leaderboard ID (degene die je hebt ingesteld in iTunes Connect) laat LEADERBOARD_ID = "com.score.mygamename"
De eerste variabele geeft aan of Game Center is ingeschakeld en de tweede wordt later gebruikt door de authenticatiecode van de lokale speler om GameKit in staat te stellen het standaard leaderboard te identificeren.
partituur
zal aanvankelijk 0 zijn, natuurlijk.
LEADERBOARD_ID
is een Draad
die u moet instellen om Game Center uw score bij de server te laten indienen via de standaard leaderboard-ID. Kies de gewenste naam, maar houd er rekening mee dat deze een syntaxis op het web moet hebben. Dat is waarom ik dit leaderboard als geïdentificeerd heb com.score.mygamename
, waar mygamename
moet worden vervangen door de naam van uw app in kleine letters, zonder spaties.
Voordat we Game Center inschakelen op de iTunes Connect-pagina van uw app, maken we de basiscode af. Voeg deze regel toe aan viewDidLoad ()
:
// Bel de GC-authenticatiecontroller authenticateLocalPlayer ()
En voeg de onderstaande functie direct hieronder toe viewDidLoad ()
:
// MARK: - AUTHENTICATE LOCAL PLAYER func authenticateLocalPlayer () let localPlayer: GKLocalPlayer = GKLocalPlayer.localPlayer () localPlayer.authenticateHandler = (ViewController, error) -> Void in if ((ViewController)! = Nil) // 1 Toon login als speler niet ingelogd is self.present (ViewController !, geanimeerd: true, completion: nil) else if (localPlayer.isAuthenticated) // 2. Speler is al geverifieerd en ingelogd, laad zelf het spelcentrum. gcEnabled = true // Haal de standaard leaderboard-ID op localPlayer.loadDefaultLeaderboardIdentifier (completionHandler: (leaderboardIdentifer, error) in if error! = nil print (error) else self.gcDefaultLeaderBoard = leaderboardIdentifer!) else // 3. Game Center is niet ingeschakeld op het apparaat van de gebruiker self.gcEnabled = false print ("Lokale speler kan niet worden geverifieerd!") Afdrukken (fout)
Als een gebruiker zich niet via Game Settings op zijn apparaat heeft aangemeld, geeft de bovenstaande methode het loginscherm van Game Center weer zodra het verbinding maakt met de GC-server. Zodra de speler is ingelogd, krijgt de app de standaard leaderboard-ID.
Bij de volgende methode maken we de app de pakken LEADERBOARD_ID
string die u eerder hebt gemaakt en geef deze door als de standaard leaderboard-id van de Game Center-server.
// MARK: - VOEG 10 PUNTEN TOE AAN DE SCORE EN STUUR DE GEACTUALISEERDE SCORE IN NAAR GAME CENTER @IBAction func addScoreAndSubmitToGC (_ verzender: AnyObject) // Voeg 10 punten toe aan de huidige score + + 10 scoreLabel.text = "\ (score ) "// score indienen bij GC leaderboard laat bestScoreInt = GKScore (leaderboardIdentifier: LEADERBOARD_ID) bestScoreInt.value = Int64 (score) GKScore.report ([bestScoreInt)) (error) in if error! = Nil print (error !. localizedDescription) else print ("Beste score ingediend op uw Leaderboard!")
De bovenstaande code voegt ook 10 punten toe aan de huidige score, dus elke keer dat u op klikt Score toevoegen en indienen bij GC Als u op de knop drukt, ziet u dat het rode score-etiket verandert en verzendt de app die bijgewerkte score naar uw GC-leaderboard.
U moet nu een toevoegen GameKit gedelegeerde methode die de GC-controller zal afwijzen.
// Delegeren om de GC-controller te verwijderen func gameCenterViewControllerDidFinish (_ gameCenterViewController: GKGameCenterViewController) gameCenterViewController.dismiss (geanimeerd: true, completion: nil)
Er is nog maar één methode over om te coderen voordat je je scorebord op iTunes Connect maakt. Dit is de actie voor de knop waarmee het Game Center wordt geopendViewController
.
// MARK: - OPEN GAME CENTRE LEADERBOARD @IBAction func checkGCLeaderboard (_ sender: AnyObject) let gcVC = GKGameCenterViewController () gcVC.gameCenterDelegate = self gcVC.viewState = .leaderboards gcVC.leaderboardIdentifier = LEADERBOARD_ID present (gcVC, geanimeerd: true, voltooiing: nul)
Zoals je hierboven kunt zien, start deze code de GC-controller op, wijst de gedelegeerde aan die controller, stelt de weergavestatus van de controller in om scoreborden te laten zien en geeft de LEADERBOARD_ID
voordat de controller wordt gepresenteerd.
Nu zijn we klaar met coderen, maar je kunt de app nog niet uitvoeren. Als je dit doet, krijg je een foutmelding van Xcode omdat je geen eigen scorebord hebt gemaakt op de iTunes Connect-pagina van je app.
Je had al een iOS-app moeten maken in iTunes Connect met je eigen bundelidentificatie. Voer nu uw app in via uw iTunes Connect-dashboard en klik op Kenmerken en dan Game Center.
Klik vervolgens op de + pictogram naast leaderboards.
Kiezen Enig Leaderboard op het volgende scherm.
Hier moet je de naam typen die je je leaderboard wilt geven. In de onderstaande schermafbeelding heb ik gebruikt Mijn Leaderboard-naam net als een voorbeeld. Je mag de jouwe bellen Scorebord met de beste scores of wat je maar wilt.
In de Leaderboard ID veld, plak de tekenreeks van de LEADERBOARD_ID
we hebben eerder gemaakt in het Xcode-project.
Aangezien de score een cijfer is, selecteert u Geheel getal in de Type scoreformaat veld. U kunt de gewenste optie kiezen Inzendingstype en sorteervolgorde. Het verlof Scorebereik (optioneel) blanco.
Klik ten slotte op Taal toevoegen knop.
In het pop-upvenster moet je de taal van je scorebord selecteren. De standaardinstelling is altijd Engels. Typ de Engelse naam van je scorebord opnieuw en selecteer a Score formaat (Ik koos komma's om groepen cijfers te scheiden).
De Score formaat achtervoegsel velden zijn optioneel; u kunt beide velden leeg laten of het gewenste achtervoegsel typen. Als je game bijvoorbeeld scorepunten heeft, kun je 'punt' en 'punten' typen voor meerderen, dus de Game Center-controller voegt dat achtervoegsel toe aan het einde van de scores op je scorebord, zoals '1 punt' of '100 points".
U kunt ook een pictogram toevoegen. De afbeelding moet een JPEG-, JPG- of PNG-bestand zijn van 512x512 of 1024x1024 pixels, ten minste 72 DPI, en in de RGB-kleurruimte zonder transparante achtergrond. Klik Kies bestand om uw afbeelding te uploaden.
Klik ten slotte op Opslaan, en je bent klaar. U kunt de bovenstaande stappen herhalen om meer talen toe te voegen. Zorg er wel voor dat u de ranglijstnamen in de geselecteerde taal typt.
Zodra je een venster hebt toegevoegd, kun je de gegevens van je leaderboard controleren. Als alles in orde is, klik dan op Opslaan, en u wordt doorverwezen naar de pagina Functies, met uw gloednieuwe leaderboard.
Nu is het tijd om Game Center in het App Store-gedeelte van uw app in te schakelen. Klik App Winkel en Bereid je voor op inzending.
Scroll naar beneden tot je vindt Game Center met een schakelaar ernaast. Schakel dit in en het wordt groen. Klik vervolgens op de + teken naast leaderboards, selecteer je leaderboard in de lijst en klik op Gedaan.
Klik Opslaan in de rechterbovenhoek van het venster en je bent klaar met het instellen van Game Center op iTunes Connect.
U kunt nu teruggaan naar uw Xcode-project en de app uitvoeren op een echt apparaat of zelfs op de iOS-simulator. Als u nog niet bent aangemeld bij Game Center, wordt de aanmeldingscontroller weergegeven. Het ziet er zo uit:
Log in met uw inloggegevens en u kunt beginnen met het testen van de app!
In onze addScoreAndSubmitToGC ()
methode hebben we het volgende toegevoegd afdrukken()
bellen:
print ("Beste score ingediend op uw Leaderboard!")
Dus als je op de rode knop tikt, is de scoreLabel
geeft "10" weer en de Xcode-console wordt afgedrukt Beste score ingediend bij je Leaderboard!
Tik nog drie keer op de rode knop en tik vervolgens op de blauwe om je leaderboard te openen en controleer of de ingediende score 40 is. Je zou zoiets als dit moeten zien:
Als je Game Center in actie wilt zien met een volledig functionele game-app, kun je mijn spel template Four Dots van CodeCanyon bekijken. Het is een sjabloon voor een minimaal eindeloos spel dat de beste scores opslaat en doorgeeft aan het Game Center.
Spelsjablonen zoals deze zijn een geweldige manier om een voorsprong te krijgen op je volgende spel. CodeCanyon heeft honderden iOS-gamesjablonen die u kunt gebruiken om de ontwikkeling te versnellen, zodat u het volgende killer-spel veel sneller kunt bouwen!
Bedankt voor het lezen en ik zie je de volgende keer! Bekijk enkele van onze andere tutorials over de ontwikkeling van Swift- en iOS-apps.