Game Center er Apples sosiale spillnettverk. Det gjør det mulig for brukerne å spore sine høyt score på et leaderboard, sammenligne prestasjoner, inviter venner til å spille et spill, og å starte et flerspillerspill gjennom automatisk matching. Så hvis du har bygget et iOS-spill og vil at brukerne skal kunne legge sine poeng til et spillesenter-leaderboard, er dette riktig opplæring for deg!
Hvis du vil ha mer informasjon om apper og spillsenteret, kan du gå til sin Apple Developer-side.
For denne veiledningens skyld har jeg opprettet et grunnleggende Xcode-prosjekt som du kan laste ned fra GitHub. Jeg vil forklare alle nødvendige skritt for å lage et leaderboard på iTunes Connect og den nødvendige koden for å sende inn en score til den, sammen med en knapp for å åpne topplaten fra appen.
Slik ser appens Storyboard ut:
Dette prosjektet har en UILabel med rød tekst jeg har ringt scoreLabel
og et par UIButtons. Den røde vil legge til 10 poeng til poengsummen og sende den til et spillesenter-leaderboard, og den blå vil åpne GKGameCenterViewController og vis det leaderboardet.
Den aller første tingen å gjøre er å aktivere Spillsenter i Capabilities fanen i Xcode.
Da må du importere GameKit øverst på din ViewController.swift fil og legg til GKGameCenterControllerDelegate
protokoll til klassedeklarasjonen.
importer GameKit klasse ViewController: UIViewController, GKGameCenterControllerDelegate
La oss legge til noen få variabler nå. Du kan lime inn denne koden rett inn i din ViewController
klasse:
/ * Variabler * / var gcEnabled = Bool () // Kontroller om brukeren har Game Center aktivert var gcDefaultLeaderBoard = String () // Kontroller standard leaderboardID var score = 0 // VIKTIG: Erstatt den røde strengen nedenfor med ditt eget leaderboard ID (den du har angitt i iTunes Connect), la LEADERBOARD_ID = "com.score.mygamename"
Den første variabelen indikerer om du har Game Center aktivert, og den andre vil bli brukt senere av lokaliseringsautentiseringskoden for å aktivere GameKit til å identifisere standard leaderboard.
poengsum
vil i utgangspunktet være 0, selvfølgelig.
LEADERBOARD_ID
er en string
som du må angi for å få Game Center til å sende poengsummen din til serveren via standard leaderboardidentifikatoren. Velg navnet du vil ha, men husk at det må ha en syntetisk omvendt web. Derfor har jeg identifisert dette leaderboardet som com.score.mygamename
, hvor mygamename
bør erstattes av appens navn i små bokstaver, uten mellomrom.
Før du aktiverer spillesenter på iTunes Connect-siden i appen din, la vi fullføre grunnleggende koden. Legg til denne linjen i viewDidLoad ()
:
// Ring GC-godkjenningsregulatoren authenticateLocalPlayer ()
Og legg til følgende funksjon rett under viewDidLoad ()
:
// MARK: - AUTENTISK LOKAL SPILLER func authenticateLocalPlayer () la localPlayer: GKLocalPlayer = GKLocalPlayer.localPlayer () localPlayer.authenticateHandler = (ViewController, feil) -> Ugyldig hvis ((ViewController)! = Null) // 1 . Vis logg inn hvis spilleren ikke er logget inn self.present (ViewController !, animert: true, completion: nil) ellers hvis (localPlayer.isAuthenticated) // 2. Spilleren er allerede autentisert og logget inn, last spillet sentrum. gcEnabled = true // Hent standard leaderboard ID localPlayer.loadDefaultLeaderboardIdentifier (completionHandler: (leaderboardIdentifer, feil) i hvis feil! = null print (error) else self.gcDefaultLeaderBoard = leaderboardIdentifer!) ellers // 3. Spillsenter er ikke aktivert på brukeren selv self.gcEnabled = feil utskrift ("Lokal spiller kunne ikke godkjennes!") Utskrift (feil)
Hvis en bruker ikke har logget på Game Center fra Innstillinger på enheten, viser fremgangsmåten ovenfor Innloggingsskjermbildet for Game Center så snart det er koblet til GC-serveren. Når spilleren er logget inn, får appen standard leaderboard-ID.
I den neste metoden vil vi få appen til å ta tak i LEADERBOARD_ID
streng du tidligere har opprettet og sender den som standard leaderboard-ID til spillingssenter-serveren.
// MARK: - LEGG 10 POINTS TIL SCORE OG SEND DEN OPPDATERTE SCORE TIL GAME CENTER @IBAction func addScoreAndSubmitToGC (_ sender: AnyObject) // Legg 10 poeng til nåværende poengsum + = 10 scoreLabel.text = "\ ) "// Submit score til GC leaderboard la bestScoreInt = GKScore (leaderboardIdentifier: LEADERBOARD_ID) bestScoreInt.value = Int64 (poengsum) GKScore.report ([bestScoreInt]) (feil) i hvis feil! = Null print (error !. localizedDescription) else print ("Beste poengsum som er sendt til Leaderboard!")
Koden ovenfor legger også til 10 poeng til nåværende poengsum, så hver gang du klikker på Legg til poeng og send til GC knappen, vil du se den røde poengetiketten endres, og appen vil sende den oppdaterte poengsummen til GC-leaderboardet ditt.
Du må nå legge til en GameKit delegere metode som vil avvise GC Controller.
// Delegat å avvise GC controller func gameCenterViewControllerDidFinish (_ gameCenterViewController: GKGameCenterViewController) gameCenterViewController.dismiss (animert: true, fullføring: null)
Det er bare én metode som er igjen for å kode før du oppretter ditt leaderboard på iTunes Connect, som er handlingen for knappen som åpner spillingssenteretViewController
.
// MARK: - ÅPEN GAME CENTER LEADERBOARD @IBAction func checkGCLeaderboard (_ sender: AnyObject) la gcVC = GKGameCenterViewController () gcVC.gameCenterDelegate = selv gcVC.viewState = .leaderboards gcVC.leaderboardIdentifier = LEADERBOARD_ID til stede (gcVC, animert: ferdigstillelse: null)
Som du kan se over, innstiller denne koden GC-kontrolleren, tilordner sin delegat til den kontrolleren, setter kontrollerens visningstilstand for å vise topplister og går langs din LEADERBOARD_ID
før du presenterer kontrolleren.
Nå er vi ferdige med koding, men du kan ikke kjøre appen enda. Hvis du gjør det, får du en feil fra Xcode siden du ikke har opprettet ditt eget leaderboard på iTunes Connect-siden i appen din.
Du burde allerede ha opprettet en iOS-app i iTunes Koble til med din egen Bundle Identifier. Skriv inn din App fra iTunes Connect-dashbordet, og klikk Egenskaper og så Spillsenter.
Klikk deretter på + ikon ved siden av Leaderboards.
Velge Single Leaderboard på neste skjerm.
Her må du skrive inn navnet du vil gi ditt rangliste. I skjermbildet nedenfor har jeg brukt Mitt ledernavn bare som et eksempel. Du kan ringe din Beste poengleder eller alt du ønsker.
I Leaderboard ID feltet, lim inn strengen av LEADERBOARD_ID
Vi har tidligere opprettet i Xcode-prosjektet.
Siden poengsummen er et tall, velg Integer i Score Format Type felt. Du kan velge alternativet du vil ha for Innleveringstype og Sorteringsrekkefølge. Permisjon Score rekkevidde (valgfritt) blank.
Til slutt klikker du på Legg til språk knapp.
I popup-vinduet må du velge språket på topplisten din. Standard er alltid engelsk. Skriv det engelske navnet på topplisten igjen, og velg en Resultatformat (Jeg valgte kommaer for å skille grupper med sifre).
De Resultatformat Suffix felter er valgfrie; Du kan legge begge feltene tomme eller skrive ønsket suffiks. For eksempel, hvis spillet ditt har poengsum, kan du skrive "poeng" og "poeng" for flertall, slik at Game Center-kontrolleren vil legge til dette suffiket til slutten av poengene som vises på topplisten, som "1 poeng" eller "100 poeng".
Du kan også legge til et ikon. Bildet må være en .jpeg, .jpg eller .png-fil som er 512x512 eller 1024x1024 piksler, minst 72 dpi, og i RGB-fargeplass uten gjennomsiktig bakgrunn. Klikk Velg Fil å laste opp bildet ditt.
Til slutt klikker du Lagre, og du er ferdig. Du kan gjenta trinnene ovenfor for å legge til flere språk - bare vær sikker på å skrive topplistenavnene i henhold til det valgte språket.
Når du har lagt til et vindu, kan du sjekke oversikten over topplisten din. Hvis alt er bra, klikk Lagre, og du blir omdirigert til siden Funksjoner, med ditt splitter nye leaderboard.
Nå er det på tide å aktivere Game Center i App Store-delen av appen din. Klikk App Store og Forbered deg på innsendelse.
Rull ned til du finner Spillsenter med en bryter ved siden av den. Aktiver dette, og det blir grønt. Klikk deretter på + tegn ved siden av Leaderboards, velg topplisten din fra listen, og klikk Ferdig.
Klikk Lagre i øverste høyre hjørne av vinduet, og du vil være ferdig med å sette opp Game Center på iTunes Connect.
Du kan nå gå tilbake til Xcode-prosjektet og kjøre appen på en ekte enhet eller til og med på iOS-simulatoren. Hvis du ikke allerede er logget inn i Game Center, vil Sign In-kontrolleren dukke opp. Det ser slik ut:
Logg på med legitimasjonene dine, og du kan begynne å teste appen!
I vår addScoreAndSubmitToGC ()
metode, vi la til følgende skrive ut()
anrop:
skriv ut ("Beste poengsum som er sendt til Leaderboard!")
Så hvis du trykker på den røde knappen, scoreLabel
vil vise "10", og Xcode-konsollen vil bli skrevet ut Beste poengsum som er sendt til Leaderboard!
Trykk på den røde knappen tre ganger, og trykk deretter på den blå for å åpne topplisten din, og kontroller at innsendt score er 40. Du bør se noe slikt:
Hvis du vil se Game Center i bruk med en fullt funksjonell spillapp, kan du kanskje sjekke ut min CodeCanyon-spillmaler Four Dots. Det er en mal for et minimalt uendelig spill som sparer beste poeng og sender dem til spillsenteret.
Spillmaler som dette er en fin måte å få en start på neste spill. CodeCanyon har hundrevis av iOS-spillmaler som du kan bruke til å hoppe i utvikling, slik at du kan bygge det neste morderen spillet så mye raskere!
Takk for at du leser, og jeg ser deg neste gang! Vennligst sjekk ut noen av våre andre veiledninger på Swift og iOS app utvikling.