在使用ScrollView的时候,有这么一个需求,就是ScrollView的内容中填充的是一个动态的列表,在新添加元素的时候,需要将滚动列表自动定位到最后一个。
值为0时,位于底部,值为1时,位于顶部。
using UnityEngine;
using UnityEngine.UI;
public class Test : MonoBehaviour
{
public ScrollRect scrollRect;
void Start()
{
scrollRect.verticalScrollbar.value = 0;
}
}

值为0时,位于底部
using UnityEngine;
using UnityEngine.UI;
public class Test : MonoBehaviour
{
public ScrollRect scrollRect;
void Start()
{
scrollRect.verticalNormalizedPosition = 0;
}
}
这个需要计算下具体的位置。

因为需要自动计算大小和列表排列,所以在ScrollRect的Content上加入了Grid Layout Group和Content Size Fitter,但是在加入新元素时,使用了上述方法后,发现有时候会自动到底部,有时候会差一点点,巧合是差的一点点就刚好是一个元素的距离。
经过分析后发现,在加入新的元素时,有时候UI界面没有及时刷新更改大小,所以我就想着可能等到下一帧或者等一帧说不定就可以。
yield return new WaitForEndOfFrame();
yield return new WaitForFixedUpdate();
结果发现还是没有解决。
最后,通过手动刷新Canvas,Grid Layout Group和Content Size Fitter,才解决了这个问题。
Canvas.ForceUpdateCanvases();
_ScrollRect.content.GetComponent<VerticalLayoutGroup>().CalculateLayoutInputVertical();
_ScrollRect.content.GetComponent<ContentSizeFitter>().SetLayoutVertical();
_ScrollRect.verticalNormalizedPosition = 0;
尾语
如果有写的不对的地方,欢迎各位大佬批评指正。
我刚读了这个答案Convertingupper-casestringintotitle-caseusingRuby.有如下一行代码"abc".split(/(\W)/).map(&:capitalize).join&:capitalize到底是什么?在我自己将它放入irb之前,我会告诉你,它不是有效的ruby语法。它必须是某种Proc对象,因为Array#map通常需要一个block。但事实并非如此。如果我单独将它放入irb,我会得到syntaxerror,unexpectedtAMPER。 最佳答案 foo(&a_proc_o
我们将Rails和EventMachine一起使用,当与Passenger一起使用该组合时,需要进行一些非常具体的设置。经过大量的试验和错误,我让EventMachine初始化工作得很好,但我想更好地理解代码。正如您在下面的代码片段中看到的那样,我们的初始化程序会检查乘客,然后在重新启动EventMachine之前检查它是否是fork进程。ifdefined?(PhusionPassenger)PhusionPassenger.on_event(:starting_worker_process)do|forked|#forpassenger,weneedtoavoidorphanedt
因此,我们的页面中有以下代码:OnOff这是2个单选按钮。'开和关'。“关闭”是默认值。使用Watir-webdriver和Ruby,我们想要选择“打开”单选按钮。我们这样做:browser.radio(:id=>"HasRegistration_true").set但在这样做时,我们得到以下错误:`WebElement.clickElement':Elementcannotbescrolledintoview:[objectHTMLInputElement](Selenium::WebDriver::Error::MoveTargetOutOfBoundsError)我们知道Sele
看起来不像一个普通的Ruby类,那么它到底是什么呢?一个大的Ruby“block”,一些被解析的自定义元语言?只是好奇。我知道您可以在Fastfile中使用Ruby;该范式达到了多远,您可以在Fastfile中定义类或函数,还是必须仅保留faSTLane支持的“channel”概念? 最佳答案 Doesn'tlooklikeastraightRubyclass不是一个类,不是。但仍然是普通的ruby。有点DSL魔法。这意味着您可以自由地定义类或以其他方式做任何您想做的事情,只要您仍然正确配置faSTLane(调用lane方法等等)。
我想我对StringIO的理解有点类似于Java的StringBuffer类,但我并没有真正完全理解它。您将如何定义它及其在Ruby中的用途/可能用途?只是希望消除我的困惑。 最佳答案 不,StringIO更类似于StringReader/StringWriter比StringBuffer.JavaStringBuffer是字符串的可变版本(因为字符串是不可变)。StringReader/StringWriter是方便的类,用于伪造文件访问。您可以在String中读/写具有与Reader/Writer相同的面向流的接口(interf
我知道这不是编程问题,我找不到非常清晰和描述性的解决方案。 最佳答案 Mongoid的documentation很清楚:Embeddedrelationsdescribedocumentswhoarestoredinsideotherdocumentsinthedatabase.Referencedrelationsdescribedocumentsthatreferencedocumentsinanothercollectionbystoringforeignkeydata(usuallyanid)abouttheotherdoc
我一直在尝试更深入地了解Ruby,解构样板式rails应用程序似乎是了解编写跨不同文件和目录的Ruby应用程序的一些细节和优雅的好方法。在我当前的应用程序中,文件之间对“requires”的依赖变得有点问题(我发现我需要做一些事情,比如requires'../../../lib/helper'它变得有点丑陋。我注意到Rails应用程序似乎不受此影响。我确实注意到了这条线:requireFile.expand_path('../../config/environment',__FILE__)当我用谷歌搜索时,我发现很多关于Rails启动例程等的解释,但没有关于该行到底做什么的明确描述。在
我是Ruby的初学者,这个问题困扰了我很长时间。在RSpec文件中,如果我们写Book.should,什么是should关键词?它是Book对象的成员吗?它是如何成为Book对象的成员的?或者它是Ruby的某种构造?它是一个函数吗?如果它是函数或成员,我在哪里可以找到它的定义? 最佳答案 加载后,RSpec包括amodule进入Kernel模块,该模块包含在Ruby已知的所有对象中。因此,它可以使should方法对所有对象都可用。因此,should不是关键字(如if、class或end),而是一种普通方法。请注意,mixin仅在RS
当我遇到这个错误时,我通常会掩盖它并修复导致它的任何语法错误,但出于好奇,tLABEL在unexpectedtLABEL中究竟意味着什么?我已经尝试寻找答案,但只有很多人试图就他们的错误寻求帮助。我还找到了这个定义:tlabelisanonwindowedVCLcontrolthatdisplaysnoneditabletextonaform.ItisdefinedintheStdCtrls.pasunit.但我认为这不是一个非常容易理解的定义。 最佳答案 tLABEL是一个“标签”标记。在较新的1.9格式中指定哈希时经常使用它:{
我正在尝试滚动网页以查找并单击滚动页面时延迟加载的内容。我正在使用以下命令require'watir-webdriver'@browser=Watir::new:firefox@browser.send_keys:space我在firefox上使用网络驱动程序,我在ubuntu上,但它不工作。在下面的ruby代码中,我试图向下滚动页面,直到找不到带有:id的元素。该元素正在延迟加载。几秒钟后我超时了,不知道下面的代码有什么问题。When/^deal(\d+)isloaded$/do|id|(0..5).eachdo|click|@browser.send_keys:spaceend