public static void PlaySound(string name, GameObject gameObject)
    {
        if (!Instance.soundDictionary.ContainsKey(name))
        {
            Debug.LogError("The sound named <color=blue>" + name + "</color> doesn't exists.");
            return;
        }

        if (Instance.gameObjectDictionary.ContainsKey(gameObject))
        {
            AudioSourceController audioSourceControlle = Instance.gameObjectDictionary[gameObject];
            PlaySoundInternal(name, audioSourceControlle);
        }
        else
        {
            GameObject audioSource = new GameObject("Audio Source Controller");
            audioSource.transform.SetParent(gameObject.transform, true);

            AudioSourceController audioSourceController = audioSource.AddComponent <AudioSourceController>();
            audioSourceController.Initialize(Instance.numberChannelPerGameObject);
            Instance.gameObjectDictionary.Add(gameObject, audioSourceController);

            PlaySoundInternal(name, audioSourceController);
        }
    }