M8 CMS SDK - Quick Start Guide
5-Minute Setup
Step 1: Add to Your Scene (1 minute)
- Open your Unity project
- Drag
M8CMS_SDK_Prefab.prefabinto your scene - Done! The SDK auto-initializes
Step 2: Get Your Code Ready (2 minutes)
C#using UnityEngine; using M8CMS; public class MyGameScript : MonoBehaviour { private M8CMSManager cmsManager; void Start() { // Access the SDK cmsManager = M8CMSManager.Instance; // Listen for data ready M8CMSManager.OnGameDataLoaded += OnDataLoaded; } void OnDataLoaded(GameData gameData) { Debug.Log($"Loaded {gameData.levels.Count} levels!"); // Your game data is ready to use foreach (var level in gameData.levels) { Debug.Log($"Level {level.index}: {level.levelType}"); } } async void LoadLevelImage(int levelIndex) { // Download and get level image var sprite = await cmsManager.GetLevelSpriteAsync(levelIndex); myImageUI.sprite = sprite; } void OnDestroy() { M8CMSManager.OnGameDataLoaded -= OnDataLoaded; } }
Step 3: Use Level Data (1 minute)
C#// Get level information Level level = cmsManager.GetLevelByIndex(5); // Load level image async void ShowLevelPreview(int levelIndex) { var sprite = await cmsManager.GetLevelSpriteAsync(levelIndex); levelImage.sprite = sprite; } // Load level video async void PlayLevelVideo(int levelIndex) { var video = await cmsManager.GetLevelVideoAsync(levelIndex); // Use video bytes with Unity's VideoPlayer }
Step 4: Track Player Progress (1 minute)
C#// When player starts a level, notify the SDK public void StartLevel(int levelIndex) { cmsManager.ConsumeLevelContent(levelIndex); // This triggers auto-download of upcoming levels // based on your settings }
Common Use Cases
Use Case 1: Level Select Screen
C#void Start() { cmsManager = M8CMSManager.Instance; CreateLevelButtons(); } void CreateLevelButtons() { var levels = cmsManager.GetAllLevels(); foreach (var level in levels) { var button = CreateButton(level.index); StartCoroutine(LoadThumbnail(button, level)); } } IEnumerator LoadThumbnail(Button button, Level level) { var task = cmsManager.GetLevelSpriteAsync(level.index); yield return new WaitUntil(() => task.IsCompleted); button.image.sprite = task.Result; }
Use Case 2: In-Game Content
C#// When player reaches level void OnLevelStart(int levelIndex) { // Let SDK know player is here cmsManager.ConsumeLevelContent(levelIndex); // Get level data Level level = cmsManager.GetLevelByIndex(levelIndex); // Setup level SetupGrid(level.gridSize); SetReward(level.rewardCoin); // Load level image if needed StartCoroutine(LoadLevelContent(levelIndex)); }
Use Case 3: Collection Gallery
C#void DisplayCollections() { var collections = cmsManager.GetAllCollections(); foreach (var collection in collections) { CreateGalleryItem(collection); } } async void CreateGalleryItem(CollectionItem collection) { var sprite = await cmsManager.GetCollectionSpriteAsync(collection.index); var item = Instantiate(prefab); item.GetComponent<Image>().sprite = sprite; item.GetComponentInChildren<Text>().text = collection.name; }
Configuration Checklist
- Add
M8CMS_SDK_Prefabto your scene - Set your
appKeyin the Inspector - Configure
downloadImagesVideosOnStart(0-5 recommended) - Configure
downloadNewLevelsBeforeXLevel(1-3 recommended) - Set
maxCacheSizeaccording to your game (40MB default) - Enable or disable built-in content as needed
Essential API Reference
Get Level Data
C#Level level = cmsManager.GetLevelByIndex(5);
Load Image
C#var sprite = await cmsManager.GetLevelSpriteAsync(levelIndex);
Load Video
C#var video = await cmsManager.GetLevelVideoAsync(levelIndex);
Track Progress
C#cmsManager.ConsumeLevelContent(levelIndex);
Check Content Status
C#bool ready = cmsManager.IsLevelContentReady(levelIndex);
Get All Levels
C#var levels = cmsManager.GetAllLevels();
Get All Collections
C#var collections = cmsManager.GetAllCollections();
Tips & Best Practices
- Always subscribe to events to know when data is ready
- Use
ConsumeLevelContent()to trigger auto-downloads - Handle async operations with coroutines or await
- Check content availability before displaying
- Let the SDK handle caching - don't duplicate cache logic
- Use version management for A/B testing content
- Enable debug logs during development
Need More Details?
See SDK_DOCUMENTATION.md for complete API reference.