Извините за поздний следить, но да, это возможно. Чтобы получить эту функциональность, вы захотите использовать user32.dll. Имейте в виду, что это окна.
Как это будет только nececary в окнах автономных и, возможно, редактор единства это стоит использовать
#if UNITY_STANDALONE_WIN || UNITY_EDITOR
Теперь вы хотите использовать положение окна, как указано в user32.dll так первый из вас импортировать fucntion из DLL
[DllImport("user32.dll", EntryPoint = "SetWindowPos")]
и связать это с переменной
private static extern bool SetWindowPos(IntPtr hwnd, int hWndInsertAfterint x, int Y, int cx, int cy, int wFlags);
Вы также можете найти окно, которое можно сделать аналогичным образом. Но не забудьте изменить текущий «WindowTitle» на ваш фактический заголовок окна.
[DllImport("user32.dll", EntryPoint = "FindWindow")]
public static extern IntPtr FindWindow(System.String className, System.String windowName);
Теперь все, что осталось это функция для вызова, так что вы можете установить положение окна. Что бы что-то вроде следующего
public static void SetPosition(int x, int y, int resX = 0, int resY = 0)
{
SetWindowPos(FindWindow(null, "WindowTitle"), 0, x, y, resX, resY, resX * resY == 0 ? 1 : 0);
}
и, конечно, не забудьте закончить #if с
#endif
Теперь вы можете вызвать функцию SetPosition в Awake/OnEnable Как это
void Awake()
{
SetPosition(0,0);
}
Другие функции, такие как изменение размера, могут быть немного сложнее, но не должны быть невозможными. Вы можете посмотреть msdn windowFunctions для получения дополнительной информации об этом
И на всякий случай. Вот полнофункциональная копия положения окна. Просто прикрепите компонент WindowModifier к геймобжектам, изменить заголовок окна с соответствующим названием, и положение, в которое когда-либо позицию, которую вы хотите
using UnityEngine;
using System;
using System.Collections;
using System.Runtime.InteropServices;
public class WindowModifier: MonoBehaviour
{
#if UNITY_STANDALONE_WIN || UNITY_EDITOR
[DllImport("user32.dll", EntryPoint = "SetWindowPos")]
private static extern bool SetWindowPos(IntPtr hwnd, int hWndInsertAfter, int x, int Y, int cx, int cy, int wFlags);
[DllImport("user32.dll", EntryPoint = "FindWindow")]
public static extern IntPtr FindWindow(System.String className, System.String windowName);
public static void SetPosition(int x, int y, int resX = 0, int resY = 0)
{
SetWindowPos(FindWindow(null, "My window title"), 0, x, y, resX, resY, resX * resY == 0 ? 1 : 0);
}
#endif
void Awake()
{
SetPosition(0,0);
}
}
Да я сделал, я не пытаюсь изменить. Я пытаюсь изменить окно целиком. Как я уже упоминал в моем примере, установив режим изменения размера, позицию запуска окна и т. Д. – Xeon