Archivi categoria: Programmazione

Concetti di programmazione generici

.Net CF 3.5: Unable to read project file, C:\Windows \Microsoft.NET\Framework\ v3.5\Microsoft .CompactFramework.CSharp .targets OR (VisualBasic) was not foundWind

If you got this error opening Visual Studio after update to Windows 10 Anniversary Update,
you have to install the .Net Compact Framework PowerToys into your Windows 10 OS!!

Download it from Microsoft’s site: https://www.microsoft.com/en-us/download/confirmation.aspx?id=13442

Enjoy

Unity 3D: Singleton Design Pattern

Affrontiamo l’implementazione di un design pattern fondamentale della letteratura informatica: il Singleton.

L’implementazione sarà effettuata in Unity 3D, utilizzando il linguaggio C#.

Cos’è un singleton

Brevemente, il singleton  garantisce che una classe venga istanziata una e una sola volta in tutta l’esecuzione di un programma, accessibile da ogni punto del programma.

Implementazione

Per l’implementazione in C# si sfruttano i qualificatori static e public di una classe.

public class MySingleton : MonoBehaviour {
    // private fields
    private static MySingleton instance = null; // attenzione, i minuscola iniziale
 
    public bool MyBoolValue = true;
    //--------------------------------------------------
    // constructor field: Instance
    //--------------------------------------------------
    // Creates an instance of GamScreen if one does not exists
    //--------------------------------------------------
    // con la I maiuscola, indica il method
    public static MySingleton Instance {
        get {
            if (instance == null) {
                instance = new GameObject("MySingleton").AddComponent<MySingleton>();
            }
            return instance;
        }
    }
 
 
    //--------------------------------------------------
    // Unity method: OnApplicationQuit()
    //--------------------------------------------------
    // Called when you quit the application or stop the editor player
    //--------------------------------------------------
    public void OnApplicationQuit() {
        DestroyInstance();
    }
 
    //--------------------------------------------------
    // DestroyInstance()
    //--------------------------------------------------
    public void DestroyInstance() {
        Debug.Log("Screen Border Instance destroyed");
        instance = null;
    }
    //--------------------------------------------------
    // Initialize()
    //--------------------------------------------------
    public void Initialize() {
        Debug.Log("MySingleton initialized");
    }

    public void DoStuff() {
      Debug.Log("MySingleton stuff");
    }
    
}

Quindi per instanziare la prima volta il singleton sarà sufficente scrivere:

MySingleton.Instance.DoStuff();

e dopo quella riga di codice la classe sarà instanziata e accessibile da qualsiasi parte del programma.