C# 盒子的开关位置?
我从Unity开始,想从一些概念开始。基本上我想做的是:如果我点击屏幕右侧,切换蓝色和黄色框的位置,如果我随后点击屏幕右侧,切换黄色框和红色框。我已经为屏幕的左侧和右侧设置了画布。我需要做什么 [编辑]:我的错误可以在图片中看到。我不确定我是否应该使用不同的方法来解决这个问题。任何建议都将不胜感激C# 盒子的开关位置?,c#,unity3d,game-development,C#,Unity3d,Game Development,我从Unity开始,想从一些概念开始。基本上我想做的是:如果我点击屏幕右侧,切换蓝色和黄色框的位置,如果我随后点击屏幕右侧,切换黄色框和红色框。我已经为屏幕的左侧和右侧设置了画布。我需要做什么 [编辑]:我的错误可以在图片中看到。我不确定我是否应该使用不同的方法来解决这个问题。任何建议都将不胜感激 将其添加到按钮并设置对象引用: using UnityEngine; using UnityEngine.UI; [RequireComponent(typeof(Button))] public
将其添加到按钮并设置对象引用:
using UnityEngine;
using UnityEngine.UI;
[RequireComponent(typeof(Button))]
public class SwapObjectPositions : MonoBehaviour {
public Transform transformA;
public Transform transformB;
void Start () {
GetComponent<Button>().onClick.AddListener(SwapPositions);
}
public void SwapPositions()
{
if (transformA==null || transformB==null)
{
Debug.Log("Set object references in the inspector please");
return;
}
Vector3 posA=transformA.position;
transformA.position=transformB.position;
transformB.position=posA;
}
}
问题是,你有3个盒子可以切换位置,而不仅仅是两个。第一次交换后,订单发生变化。你必须这样做:
using UnityEngine;
using UnityEngine.UI;
[RequireComponent(typeof(Button))]
public class SwapObjectPositions : MonoBehaviour
{
public Transform[] boxTransform;
public Button LeftButton;
public Button RightButton;
void Start()
{
if (LeftButton == null || RightButton == null)
{
Debug.Log("Button reference missing");
}
LeftButton.onClick.AddListener(LeftSwap);
RightButton.onClick.AddListener(RightSwap);
if (boxTransform.Length != 3 || boxTransform[0] == null || boxTransform[1] == null || boxTransform[2] == null)
{
Debug.Log("Boxes reference missing");
}
}
public void LeftSwap()
{
// Swap Positions
Vector3 tempPosition = boxTransform[0].position;
boxTransform[0].position = boxTransform[1].position;
boxTransform[1].position = tempPosition;
// Swap Transform
Transform tempTransform = boxTransform[0];
boxTransform[0] = boxTransform[1];
boxTransform[1] = tempTransform;
}
public void RightSwap()
{
// Swap Positions
Vector3 tempPosition = boxTransform[1].position;
boxTransform[1].position = boxTransform[2].position;
boxTransform[2].position = tempPosition;
// Swap Transform
Transform tempTransform = boxTransform[1];
boxTransform[1] = boxTransform[2];
boxTransform[2] = tempTransform;
}
}
如果你能提供一个,那就太棒了。嗨,我对使用的代码有点问题。在我附加的图像中,在第一次左键和右键单击后出现错误。错误是红色和黄色应该切换图中的第二张图片,但切换代码是比较我附加到TransformA和TransformB的两种颜色蓝色和红色框。要修复此问题,我必须对代码进行哪些更改?非常感谢:嗨,阿德里安!谢谢你的帮助!我已经实现了代码,它工作得非常好。我有一个关于交换位置和交换转换代码的问题。具体来说,两者之间的区别是什么?在这段代码中,转换是对框的引用。因此,如果交换2框的位置,则交换其引用在数组中的位置。这样,数组将准确地表示您在屏幕上看到的内容。但是交换它们的引用不会更改它们的位置,因此还需要更改每个长方体transform.position的位置