
Я могу перетащить область просмотра на красный цвет и разместить его более или менее вручную в центре. но я хочу, чтобы это было автоматически в центре.
этот снимок экрана сделан после перетаскивания красного мышкой:
и я хочу, чтобы так было всегда.

это снимок экрана с настройками объекта контента:

проблема в этом скрипте, который находится в HorizontalScrollView:
Код: Выделить всё
using UnityEngine;
using UnityEngine.EventSystems;
using UnityEngine.UI;
public class ChiScrollRect : ScrollRect, IPointerEnterHandler, IPointerExitHandler
{
private static string mouseScrollWheelAxis = "Mouse ScrollWheel";
private bool swallowMouseWheelScrolls = true;
private bool isMouseOver = false;
public void OnPointerEnter(PointerEventData eventData)
{
isMouseOver = true;
}
public void OnPointerExit(PointerEventData eventData)
{
isMouseOver = false;
}
private void Update()
{
// Detect the mouse wheel and generate a scroll. This fixes the issue where Unity will prevent our ScrollRect
// from receiving any mouse wheel messages if the mouse is over a raycast target (such as a button).
if (isMouseOver && IsMouseWheelRolling())
{
var delta = UnityEngine.Input.GetAxis(mouseScrollWheelAxis);
PointerEventData pointerData = new PointerEventData(EventSystem.current);
pointerData.scrollDelta = new Vector2(0f, delta);
swallowMouseWheelScrolls = false;
OnScroll(pointerData);
swallowMouseWheelScrolls = true;
}
}
public override void OnScroll(PointerEventData data)
{
if (IsMouseWheelRolling() && swallowMouseWheelScrolls)
{
// Eat the scroll so that we don't get a double scroll when the mouse is over an image
}
else
{
// Amplify the mousewheel so that it matches the scroll sensitivity.
if (data.scrollDelta.y < -Mathf.Epsilon)
data.scrollDelta = new Vector2(0f, -scrollSensitivity);
else if (data.scrollDelta.y > Mathf.Epsilon)
data.scrollDelta = new Vector2(0f, scrollSensitivity);
base.OnScroll(data);
}
}
private static bool IsMouseWheelRolling()
{
return UnityEngine.Input.GetAxis(mouseScrollWheelAxis) != 0;
}
}
https://forum.unity.com/threads/scroll- ... ew.848848/
причина в том, что проблема: представление прокрутки не прокручивается с помощью MouseWheel при использовании мыши находится над кнопкой внутри режима прокрутки.
но этот скрипт также не позволяет изменить область просмотра в центре, даже если я меняю настройки привязки области просмотра на «Средний/Центр», удерживая нажатой клавишу «Alt» и выбирая центральный квадрат.
поэтому я застрял здесь.