C# 使一组对象居中

C# 使一组对象居中,c#,language-agnostic,unity3d,centering,C#,Language Agnostic,Unity3d,Centering,注意:我试图在C#中的Unity中实现这一点,但答案应该是一种算法,它可以在任何语言上运行,除非有一种特定于Unity或C#的方法来实现 我试图将一组不同的对象置于中心。给定一系列我们称之为numObjects的对象,每个对象之间的空间量,我们称之为space,以及屏幕的大小,我们称之为screen.width和screen.height,我需要知道第一个对象应该设置的x。从那里,我只需添加空格,然后添加下一个对象。最后,第一个对象的左边缘和屏幕的左边缘之间的空间将与最后一个对象的右边缘和屏幕的

注意:我试图在C#中的Unity中实现这一点,但答案应该是一种算法,它可以在任何语言上运行,除非有一种特定于Unity或C#的方法来实现


我试图将一组不同的对象置于中心。给定一系列我们称之为
numObjects
的对象,每个对象之间的空间量,我们称之为
space
,以及屏幕的大小,我们称之为
screen.width
screen.height
,我需要知道第一个对象应该设置的x。从那里,我只需添加
空格
,然后添加下一个对象。最后,第一个对象的左边缘和屏幕的左边缘之间的空间将与最后一个对象的右边缘和屏幕的右边缘之间的空间相同。

我可能会误解您的意图,但假设您希望在屏幕上均匀地水平间隔对象,这只需要一些基础数学:

int space = Screen.width / (numObjects+1);

根据澄清进行编辑(同样,这只是简单的数学):


请注意,这假设每个对象都具有相同的宽度,否则会有点复杂。

我不希望对象间距均匀,而是希望对象居中。考虑这一点:<代码> OsSoSOS < /代码>。O表示对象,S表示空间。我想把它放在屏幕的中央,这样它看起来像这样:
|OSOSOSOS |
。在那个例子中,两边各有5个空格,所以它居中。我现在来测试一下。谢谢
// determine the total width of the block of objects

totalWidthOfObjects = numObjects * widthOfEachObject
totalWidthOfSpacesBetweenObjects = (numObjects-1) * space
totalWidth = totalWidthOfObjects + totalWidthOfSpacesBetweenObjects

offsetFromLeft = (Screen.width - totalWidth) / 2