Чтобы организовать правильное расположение сообщений в вашем виртуальном чате, вы можете использовать Vertical Layout Group вместе с Content Size Fitter.
1. Создайте пустой объект в вашей иерархии и назовите его "MessageContainer" или что-то подобное.
2. Добавьте на него компоненты Vertical Layout Group и Content Size Fitter.
3. Установите параметры Vertical Layout Group следующим образом:
- Child Alignment: Upper Center
- Child Force Expand: None
- Child Control Width: True
- Child Control Height: False
4. Установите параметры Content Size Fitter следующим образом:
- Horizontal Fit: Unconstrained
- Vertical Fit: Preferred Size
5. Создайте префаб для сообщения и назовите его "MessagePrefab".
6. Расположите свои сообщения непосредственно внутри объекта "MessageContainer", используя префабы "MessagePrefab".
7. Добавьте следующий код к скрипту, управляющему вашим виртуальным чатом:
```csharp
public class ChatManager : MonoBehaviour
{
public GameObject messagePrefab;
public Transform messageContainer;
public void SendMessage(string messageText)
{
GameObject messageObj = Instantiate(messagePrefab, messageContainer);
Message message = messageObj.GetComponent<Message>();
if (message != null)
{
// Настройте атрибуты вашего сообщения, такие как текст, аватар, цвет фона и т. д.
message.SetText(messageText);
// Настройте правильное выравнивание сообщения, в зависимости от автора (слева или справа)
if (IsMyMessage(messageText))
{
message.SetAlignment(Message.Alignment.Right);
}
else
{
message.SetAlignment(Message.Alignment.Left);
}
}
}
private bool IsMyMessage(string message)
{
// Здесь вы можете реализовать свою проверку, является ли сообщение от вас или от собеседника.
// Например, сравнение с вашим именем пользователя или идентификатором.
return true; // замените это условие на свою реализацию
}
}
```
8. В компоненте сообщения ("Message") добавьте методы, чтобы установить текст, выравнивание и любые другие необходимые атрибуты сообщения.
Теперь, когда вы вызываете метод SendMessage в вашем скрипте для отправки сообщения, сообщение будет создаваться как GameObect из префаба "MessagePrefab" и будет быть расположено в "MessageContainer" с правильным выравниванием, в зависимости от его автора.