Здраствуйте! Ситуация такая! Это должно быть меню ля игры! Есть сцена с префабом и сроллом , в которой клонируется экземпляр прифаба на префабе весит код:Код
1
2
3
4
5
6
7
8
9
10
11
using UnityEngine.UI;
using UnityEngine.SceneManagement;
public class LoadScene : MonoBehaviour
{
public void Level_1_1_Scene()
{
SceneManager.LoadScene(2);
}
}
на самом Scroll View>Viewport>Content весит скрипт который клонирует этот префаб 5 раз :
Код
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.SceneManagement;
public class SnapScrolling : MonoBehaviour
{
[Range(1,50)]
[Header("Controllers")]
public int panCount;
[Range(0,500)]
public int panOffset;
[Range(0f, 20f)]
public float snapSpeed;
[Range(0f, 5f)]
public float scaleOffset;
[Range(0f, 20f)]
public float scaleSpeed;
[Header("Other objects")]
public GameObject panPrefab;
public Sprite[] sprites;
public ScrollRect scrollRect;
private GameObject[] instPans;
private Vector2[] pansPos;
private Vector2[] pansScale;
private RectTransform contentRect;
private Vector2 contentVector;
private int selectedPanID;
private bool isScrolling;
private void Start()
{
contentRect = GetComponent<RectTransform>();
instPans = new GameObject[panCount];
pansPos = new Vector2[panCount];
pansScale = new Vector2[panCount];
for (int i=0; i<panCount; i++)
{
instPans[i] = Instantiate(panPrefab, transform, false);
if (i == 0) continue;
instPans[i].transform.localPosition = new Vector2(instPans[i - 1].transform.localPosition.x + panPrefab.GetComponent<RectTransform>().
sizeDelta.x + panOffset, instPans[i].transform.localPosition.y) ;
instPans[i].GetComponent<Image>().sprite = sprites[i];
//тут нужно вставить подгрузку сцен к клонам префаба//
pansPos[i] = -instPans[i].transform.localPosition;
}
}
private void FixedUpdate()
{
if (contentRect.anchoredPosition.x >= pansPos[0].x && !isScrolling || contentRect.anchoredPosition.x <= pansPos[pansPos.Length - 1].x && !isScrolling) ;
scrollRect.inertia = false;
float nearesPos = float.MaxValue;
for (int i = 0; i < panCount; i++)
{
float distance = Mathf.Abs(contentRect.anchoredPosition.x - pansPos[i].x);
if (distance < nearesPos)
{
nearesPos = distance;
selectedPanID = i;
}
float scale = Mathf.Clamp(1 / (distance / panOffset) * scaleOffset, 0.5f, 1f);
pansScale[i].x = Mathf.SmoothStep(instPans[i].transform.localScale.x, scale + 0.3f, scaleSpeed * Time.fixedDeltaTime);
pansScale[i].y = Mathf.SmoothStep(instPans[i].transform.localScale.y, scale + 0.3f, scaleSpeed * Time.fixedDeltaTime);
instPans[i].transform.localScale = pansScale[i];
}
float scrollVelocity = Mathf.Abs(scrollRect.velocity.x);
if (scrollVelocity < 400 && !isScrolling) scrollRect.inertia = false;
if (isScrolling || scrollVelocity > 400) return;
contentVector.x = Mathf.SmoothStep(contentRect.anchoredPosition.x, pansPos[selectedPanID].x, snapSpeed * Time.fixedDeltaTime);
contentRect.anchoredPosition = contentVector;
}
public void Scrolling(bool scroll)
{
isScrolling = scroll;
if (scroll) scrollRect.inertia = true;
}
}
Я сделал массив из картинок , и подставил из к клонам и работает
Код
1
instPans[i].GetComponent<Image>().sprite = sprites[i];
там просто указал количество и перетянул картини , но как сделать это со сценами , чтобы было по клике на выбранный уровень"картинку, экземпляр " подгружалась сцена (2 , 3 , 4 , 5 ,6 )Помогите!