Archivi tag: c#

Come creare un videogioco con Unity 3D

Unity_PriPoiché non sarebbero sufficienti decine di post su come sviluppare un videogioco per trattare tutti gli argomenti necessari, questa sarà una breve introduzione al motore di gioco tra i più famosi: Unity 3D. L’articolo è un punto di partenza per chi non ha idea da dove iniziare.

Unity è un motore di gioco, completo di ambiente grafico, editor per il codice (utilizza MonoDevelop, ma può essere integrato con Visual Studio) e svariati strumenti in grado di facilitare lo sviluppo di un game, tra cui l’asset store, un market in cui potrete ottenere (free e a pagamento) package come ambientazioni 3D, oggetti, sheader e molto altro ( https://www.assetstore.unity3d.com/ ).

Il vantaggio di Unity è essere multipiattaforma, cioè con poco sforzo, il vostro gioco può girare su Windows, Mac, Linux, Android, BlackBerry iPad, iPhone, Xbox 360,  PlayStation 3, Wii, e dal 2014 anche su Xbox One.

Inizia scaricando Unity da qui: http://unity3d.com/unity/download ,al primo avvio vi verrà chiesto se disponete già di una licenza pro, se volete una licenza di prova di 30 giorni o se desiderate passare direttamente alla versione Free. Secondo la licenza di Unity nella versione di prova non vi è permesso pubblicare un gioco sui market, invece con la versione Free è possibile pubblicare il vostro gioco senza acquistare la versione Pro solo se con il gioco fatturate meno di 100.000$ annui. Se incassate una cifra superiore dovrete passare alla versione Pro. Per maggiori informazioni riguardo le licenze e la differenza nelle versioni, consultate questa pagina http://unity3d.com/unity/licenses.

Le competenze minime richieste sono, la conoscenza, almeno basilare, di C#, Javascript oppure Bool. Se conoscete abbastanza bene anche la programmazione ad oggetti siete già un bel passo avanti.

Adesso avete avviato Unity per la prima volta, da dove inizio per creare il mio primo videogioco?

Unity è fantastico, non solo perchè mette a dispoizione un potente ambiente di sviluppo gratuitamente, o perchè supporta praticamente tutte le piattaforme su cui può girare il tuo videogioco, ma gli stessi sviluppatori hanno pubblicato brevi tutorial (mediamente 3 minuti ciascuno) che vi permettarà di apprendere tutto quello che vi serve sapere per iniziare a portare sullo smartphone le vostre doti creative! Inizia da qui http://unity3d.com/learn/tutorials/modules.

Creare una versione di prova dell’app

Lo store di Windows Phone consente di creare una versione di prova per l’applicazione, per dare la possibilità all’utente di testare le funzionalità dell’applicazione prima di acquistarla.

trial-windows-phone

Per cominciare quando andrai a pubblicare l’app, nello store, è necessario indicare che è offerta una versione di prova e il relativo prezzo.

prezzo-windows-phone-app

Per limitare le funzionalità nella versione di prova devi leggere lo stato della licenza dell’applicazione (trial o completa).

Innanzitutto aggiungi il namespace e istanzia le due classi come di seguito:

using Microsoft.Phone.Marketplace;

private static LicenseInformation licenseInfo = new LicenseInformation();
MarketplaceDetailTask marketPlaceDetailTask = new MarketplaceDetailTask();

all’interno di licenseInfo è salvato lo stato della licenza. E’ possibile leggerlo come variabile booleana (true/false) attraverso la funzione

bool isTrial = licenseInfo.IsTrial();

Ecco un esempio completo:

private static LicenseInformation licenseInfo = new LicenseInformation();
MarketplaceDetailTask marketPlaceDetailTask = new MarketplaceDetailTask();

bool IsTrial;

private void CheckLicense()
{
isTrial = licenseInfo.IsTrial(); //leggi lo stato della licenza

if (isTrial == true) { //se è isTrial è True allora è una versione di prova, altrimenti è stata acquistata
if( MessageBox.Show("Questa è una versione di prova. Per usare questa funzione devi acquistare l'app. Vuoi andare nello store per acquistarla?", "Versione di prova", MessageBoxButton.OKCancel)==MessageBoxResult.OK)  //se premi OK vai nello store alla pagina dell'app.
{ marketPlaceDetailTask.Show(); isTrial = licenseInfo.IsTrial(); }
}
else { /*applicazione già acquistata }
}

nell’esempio se isTrial() è uguale a True significa che l’utente possiede la versione di prova e quindi mostra un messaggio di avviso. Inoltre se l’utente preme OK viene portato nello store, alla pagina dell’applicazione per poter acquistare subito l’app chiamando la funzione marketPlaceDetailTask.Show(); .

Viene nuovamente verificato lo stato della licenza nel caso in cui, dopo aver premuto OK, abbia acquistato l’app. A quel punto, non è necessario chiudere e riaprire l’applicazione per avere tutte le funzionalità sbloccate, queste saranno disponibili sin da subito.

Consigli:

  • Chiama la funzione licenseInfo.IsTrial(); il meno possibile perchè questa impiega una certa quantità di tempo, in quanto ogni volta verifica lo stato della licenza.
  • Verifica che le funzioni bloccate si sblocchino completamente prima di pubblicare l’app e che l’applicazione una volta acquistata funzioni correttamente. Ad esempio puoi provare ciò rendendo bool isTrial uguale a True o False in base al tipo di test effettuato, senza andare a leggere lo stato della licenza.

Ricorda che in fase di debug (prima di pubblicare l’app) licenseInfo.IsTrial() restituirà sempre False.

Più informazioni all’indirizzo: http://msdn.microsoft.com/en-us/library/windowsphone/develop/hh286402%28v=vs.105%29.aspx

Chiudere l’app senza tornare alla pagina precedente usando il tasto back

E’ possibile che vi sia necessario impedire all’utente di poter tornare alla pagina in cui si trovava precendentemente. Ad esempio se l’app supporta il login, non si vuole che, dopo aver eseguito l’accesso, l’utente usando il tasto back, torni nuovamente alla pagina del login.

Per far ciò aggiungi questo codice al file C#, nella pagina in cui vuoi che l’utente non possa tornare indietro:

protected override void OnNavigatedTo(System.Windows.Navigation.NavigationEventArgs e)
{
while (NavigationService.CanGoBack)
{ NavigationService.RemoveBackEntry(); }
}

Questo metodo viene chiamato quando l’utente apre la pagina in questione e pulisce la “cronologia” delle pagine visitate. Qundi premendo il tasto back del telefono quando si è in quella pagina, l’applicazione si chiude, indipendentemente dall’aver visitato o meno pagine prima di quella.

Chiudere PopUp senza uscire dall’app usando il tasto back

Uno dei motivi frequenti per cui un’ applicazione non ottiene la certificazione dallo store di Windows Phone, è la regola per cui i popUp devono essere nascosti prima che l’applicazione venga chiusa, quando il tasto “fisico” back sul telefono viene premuto.

A questo proposito la soluzione è molto semplice da implementare:

Da XAML aggiungere l’evento BackKeyPress="PhoneApplicationPage_BackKeyPress_1" all’interno del tag <phone:PhoneApplicationPage> ottenendo quindi <phone:PhoneApplicationPage BackKeyPress="PhoneApplicationPage_BackKeyPress_1" ....

Oppure aggiungere l’evento dalla finestra “Proprietà” alla voce dell’evento “BackKeyPress”.

Fatto questo andiamo a scrivere il codice C# che utilizza l’evento.
private void PhoneApplicationPage_BackKeyPress_1(object sender, System.ComponentModel.CancelEventArgs e)
{ if (GridPopUp.Visibility == Visibility.Visible) { GridPopUp.Visibility == Visibility.Collapsed; e.Cancel = true; }
}

In questo esempio il metodo viene chiamato alla pressione del tasto back e se la griglia PopUp è visibile allora verrà nascosta. L’applicazione non verrà chiusa in quanto e.Cancel=true; annulla l’operazione di uscita dall’app.