Initial commit: Star of Words Unity project
Snapshot of the existing Unity 6 language-learning word game before any refactoring. Adds Unity .gitignore and .gitattributes. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
commit
ecb1c9edea
1455 changed files with 933295 additions and 0 deletions
202
Assets/Scripts/3.5/Prefabs/ModSelectManager.cs
Normal file
202
Assets/Scripts/3.5/Prefabs/ModSelectManager.cs
Normal file
|
|
@ -0,0 +1,202 @@
|
|||
using UnityEngine;
|
||||
using UnityEngine.UI;
|
||||
using UnityEngine.SceneManagement;
|
||||
using TMPro;
|
||||
|
||||
[System.Serializable]
|
||||
public class ModData
|
||||
{
|
||||
public Sprite modSprite;
|
||||
public string sceneName;
|
||||
}
|
||||
|
||||
public class ModSelectManager : MonoBehaviour
|
||||
{
|
||||
[Header("━━━ MODLAR ━━━━━━━━━━━━━━━━━━━━━━━━━━━━")]
|
||||
public ModData[] mods;
|
||||
|
||||
[Header("━━━ KART BOYUTLARI ━━━━━━━━━━━━━━━━━━━━")]
|
||||
public float cardWidth = 900f;
|
||||
public float cardHeight = 500f;
|
||||
public float spacing = 40f;
|
||||
|
||||
[Header("━━━ PLAY BUTTON ━━━━━━━━━━━━━━━━━━━━━━━")]
|
||||
public string playButtonText = "PLAY";
|
||||
public float playButtonWidth = 400f;
|
||||
public float playButtonHeight = 100f;
|
||||
|
||||
void Start()
|
||||
{
|
||||
Canvas canvas = FindAnyObjectByType<Canvas>();
|
||||
|
||||
if (canvas == null)
|
||||
{
|
||||
GameObject canvasObj = new GameObject("Canvas");
|
||||
canvas = canvasObj.AddComponent<Canvas>();
|
||||
canvas.renderMode = RenderMode.ScreenSpaceOverlay;
|
||||
|
||||
CanvasScaler scaler = canvasObj.AddComponent<CanvasScaler>();
|
||||
scaler.uiScaleMode = CanvasScaler.ScaleMode.ScaleWithScreenSize;
|
||||
scaler.referenceResolution = new Vector2(1080, 1920);
|
||||
scaler.screenMatchMode = CanvasScaler.ScreenMatchMode.MatchWidthOrHeight;
|
||||
scaler.matchWidthOrHeight = 0.5f;
|
||||
|
||||
canvasObj.AddComponent<GraphicRaycaster>();
|
||||
}
|
||||
|
||||
GameObject oldScroll = GameObject.Find("ModScrollView");
|
||||
|
||||
if (oldScroll != null)
|
||||
Destroy(oldScroll);
|
||||
|
||||
GameObject scrollObj = new GameObject("ModScrollView");
|
||||
scrollObj.transform.SetParent(canvas.transform, false);
|
||||
|
||||
RectTransform scrollRect = scrollObj.AddComponent<RectTransform>();
|
||||
scrollRect.anchorMin = Vector2.zero;
|
||||
scrollRect.anchorMax = Vector2.one;
|
||||
scrollRect.offsetMin = Vector2.zero;
|
||||
scrollRect.offsetMax = Vector2.zero;
|
||||
|
||||
ScrollRect scroll = scrollObj.AddComponent<ScrollRect>();
|
||||
scroll.horizontal = false;
|
||||
scroll.vertical = true;
|
||||
scroll.movementType = ScrollRect.MovementType.Elastic;
|
||||
scroll.elasticity = 0.12f;
|
||||
scroll.inertia = true;
|
||||
scroll.decelerationRate = 0.135f;
|
||||
scroll.scrollSensitivity = 30f;
|
||||
|
||||
GameObject viewportObj = new GameObject("Viewport");
|
||||
viewportObj.transform.SetParent(scrollObj.transform, false);
|
||||
|
||||
RectTransform viewportRect = viewportObj.AddComponent<RectTransform>();
|
||||
viewportRect.anchorMin = Vector2.zero;
|
||||
viewportRect.anchorMax = Vector2.one;
|
||||
viewportRect.offsetMin = Vector2.zero;
|
||||
viewportRect.offsetMax = Vector2.zero;
|
||||
|
||||
Image viewportImage = viewportObj.AddComponent<Image>();
|
||||
viewportImage.color = new Color(0f, 0f, 0f, 0f);
|
||||
|
||||
Mask mask = viewportObj.AddComponent<Mask>();
|
||||
mask.showMaskGraphic = false;
|
||||
|
||||
GameObject contentObj = new GameObject("Content");
|
||||
contentObj.transform.SetParent(viewportObj.transform, false);
|
||||
|
||||
RectTransform contentRect = contentObj.AddComponent<RectTransform>();
|
||||
contentRect.anchorMin = new Vector2(0f, 1f);
|
||||
contentRect.anchorMax = new Vector2(1f, 1f);
|
||||
contentRect.pivot = new Vector2(0.5f, 1f);
|
||||
contentRect.anchoredPosition = Vector2.zero;
|
||||
contentRect.sizeDelta = Vector2.zero;
|
||||
|
||||
VerticalLayoutGroup vlg = contentObj.AddComponent<VerticalLayoutGroup>();
|
||||
vlg.spacing = spacing;
|
||||
vlg.padding = new RectOffset(50, 50, 50, 50);
|
||||
vlg.childAlignment = TextAnchor.UpperCenter;
|
||||
vlg.childControlWidth = false;
|
||||
vlg.childControlHeight = false;
|
||||
vlg.childForceExpandWidth = false;
|
||||
vlg.childForceExpandHeight = false;
|
||||
|
||||
ContentSizeFitter csf = contentObj.AddComponent<ContentSizeFitter>();
|
||||
csf.verticalFit = ContentSizeFitter.FitMode.PreferredSize;
|
||||
csf.horizontalFit = ContentSizeFitter.FitMode.Unconstrained;
|
||||
|
||||
scroll.viewport = viewportRect;
|
||||
scroll.content = contentRect;
|
||||
|
||||
if (mods == null || mods.Length == 0)
|
||||
{
|
||||
Debug.LogWarning("ModSelectManager: mods listesi boş.");
|
||||
return;
|
||||
}
|
||||
|
||||
foreach (ModData mod in mods)
|
||||
{
|
||||
if (mod == null)
|
||||
continue;
|
||||
|
||||
GameObject card = new GameObject("ModCard");
|
||||
card.transform.SetParent(contentObj.transform, false);
|
||||
|
||||
RectTransform cardRect = card.AddComponent<RectTransform>();
|
||||
cardRect.sizeDelta = new Vector2(cardWidth, cardHeight);
|
||||
|
||||
LayoutElement cardLayout = card.AddComponent<LayoutElement>();
|
||||
cardLayout.preferredWidth = cardWidth;
|
||||
cardLayout.preferredHeight = cardHeight;
|
||||
cardLayout.minWidth = cardWidth;
|
||||
cardLayout.minHeight = cardHeight;
|
||||
cardLayout.flexibleWidth = 0f;
|
||||
cardLayout.flexibleHeight = 0f;
|
||||
|
||||
Image cardImg = card.AddComponent<Image>();
|
||||
cardImg.color = new Color(0.1f, 0.1f, 0.2f, 1f);
|
||||
|
||||
GameObject imgObj = new GameObject("ModImage");
|
||||
imgObj.transform.SetParent(card.transform, false);
|
||||
|
||||
RectTransform imgRect = imgObj.AddComponent<RectTransform>();
|
||||
imgRect.anchorMin = Vector2.zero;
|
||||
imgRect.anchorMax = Vector2.one;
|
||||
imgRect.offsetMin = new Vector2(0f, 120f);
|
||||
imgRect.offsetMax = Vector2.zero;
|
||||
|
||||
Image modImg = imgObj.AddComponent<Image>();
|
||||
|
||||
if (mod.modSprite != null)
|
||||
modImg.sprite = mod.modSprite;
|
||||
|
||||
modImg.preserveAspect = true;
|
||||
modImg.raycastTarget = false;
|
||||
|
||||
GameObject btnObj = new GameObject("PlayButton");
|
||||
btnObj.transform.SetParent(card.transform, false);
|
||||
|
||||
RectTransform btnRect = btnObj.AddComponent<RectTransform>();
|
||||
btnRect.anchorMin = new Vector2(0.5f, 0f);
|
||||
btnRect.anchorMax = new Vector2(0.5f, 0f);
|
||||
btnRect.pivot = new Vector2(0.5f, 0f);
|
||||
btnRect.sizeDelta = new Vector2(playButtonWidth, playButtonHeight);
|
||||
btnRect.anchoredPosition = new Vector2(0f, 10f);
|
||||
|
||||
Image btnImg = btnObj.AddComponent<Image>();
|
||||
btnImg.color = new Color(0.1f, 0.7f, 0.2f, 1f);
|
||||
|
||||
Button btn = btnObj.AddComponent<Button>();
|
||||
|
||||
GameObject txtObj = new GameObject("Text");
|
||||
txtObj.transform.SetParent(btnObj.transform, false);
|
||||
|
||||
RectTransform txtRect = txtObj.AddComponent<RectTransform>();
|
||||
txtRect.anchorMin = Vector2.zero;
|
||||
txtRect.anchorMax = Vector2.one;
|
||||
txtRect.offsetMin = Vector2.zero;
|
||||
txtRect.offsetMax = Vector2.zero;
|
||||
|
||||
TextMeshProUGUI tmp = txtObj.AddComponent<TextMeshProUGUI>();
|
||||
tmp.text = playButtonText;
|
||||
tmp.fontSize = 50f;
|
||||
tmp.alignment = TextAlignmentOptions.Center;
|
||||
tmp.color = Color.white;
|
||||
tmp.raycastTarget = false;
|
||||
|
||||
string sceneName = mod.sceneName;
|
||||
|
||||
btn.onClick.RemoveAllListeners();
|
||||
btn.onClick.AddListener(() =>
|
||||
{
|
||||
if (string.IsNullOrWhiteSpace(sceneName))
|
||||
{
|
||||
Debug.LogWarning("ModSelectManager: sceneName boş.");
|
||||
return;
|
||||
}
|
||||
|
||||
SceneManager.LoadScene(sceneName);
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
2
Assets/Scripts/3.5/Prefabs/ModSelectManager.cs.meta
Normal file
2
Assets/Scripts/3.5/Prefabs/ModSelectManager.cs.meta
Normal file
|
|
@ -0,0 +1,2 @@
|
|||
fileFormatVersion: 2
|
||||
guid: a2b4db01ffdbb4c418ce084b87659f0f
|
||||
Loading…
Add table
Add a link
Reference in a new issue