for i in range(7):
but = Button(root, text=str(i), command=lambda a=i: self.write(True, a))
for i in range(7):
butt.clicked.connect(lambda a=i: self.CrateItem(True, a))
Один мировой канвас, на в него кидаются хелс бары с скриптами, этот вопрос на статье в комментах обсуждался.
using UnityEngine;
public class HandController : MonoBehaviour
{
public Vector3 cursor; // Положение курсора
public Vector3 difference;
public float rotationX; // Вращение объекта
void Update()
{
// Вращение руки к курсору
cursor = Camera.main.ScreenToWorldPoint(new Vector3(Input.mousePosition.x, Input.mousePosition.y, Camera.main.transform.position.x - transform.position.x));
difference = cursor - transform.position;
rotationX = Mathf.Atan2(-difference.y, difference.z) * Mathf.Rad2Deg;
transform.rotation = Quaternion.Euler(rotationX, 0f, 0f);
}
}
Раз через агрумент передать не получится, а индекс узнать нужно, то обратимся к имени объекта, т.к. имена объектов никогда не могут повторятся.
1) Создадим словарь, где ключем является имя объекта, а значением допустим текущее значение переменной i.
2) В вызываемом методе, обратимся к указателю объекта self и выжмем из него имя кнопки, которое обратилось к методу.
3) Выведем значение по ключу, который является именем кнопки и все)
Вот пример: