如果没有先在层次结构中选择对象,Unity将不允许我在场景中选择对象。这就是我在该问题上能找到的全部。
但是,似乎他们决定关闭和打开场景窗口已修复了该错误,但对我而言并非如此。另请注意,我在一个空白项目上。解决此错误确实非常困难。
编辑:我什至卸载了Unity并重新安装,希望这可以解决问题,但是不幸的是,它没有。感谢您的提前帮助。
老实说,这是一个奇怪的问题,我很难知道如何尝试解决该问题。我还按照NoëlWidmer的建议报告了该错误,但是即使是非常友善的员工也不知道如何处理该问题,他给出的建议也没有改变。的确,我什至不知道还能为您提供更多的信息,因为正如我所说,我从字面上看是在重新安装后第一次打开了一个新的Unity项目,并且如果不先单击层次结构便无法选择。这只是与我一起发生的特殊情况吗?还是其他任何人都发生过?另外,我使用的是一台使用两年的Windows 8笔记本电脑,除了Adobe套件和其他一些游戏开发人员外,几乎没有安装任何其他东西,因此我的电脑很可能不是问题的根源。
编辑:一个线索?好吧,我正在全屏浏览场景和层次结构视图,在单击层次结构中的对象并在场景视图中移动对象之后,我注意到了一些有趣的东西:
不幸的是,我的PrintScreen没有显示实际的鼠标,但是正如您所看到的那样,场景视图的行为就像我在单击对象一样,但是与此同时,我看到的是真正的鼠标向右下方!同样,当我在场景编辑器上选择一个对象并将鼠标从场景窗口移开时,东西会有些松动,鼠标会在窗口的另一侧弹出,依此类推。我不知道这对每个人来说是否正常,是否正常,是否只有我自己,这可能有助于弄清发生了什么。
伙计,我真的很喜欢Unity,但是如果保持这种状态,我想我必须放弃它并找到另一个软件,因为如果必须每次选择层次结构上的对象,我肯定将无法设计任何有价值的东西每个对象的时间。
大家好:)这是情况:
我有一个baddy预制件,它有两个碰撞器组件:一个用于物理的简单CapsuleCollider2D,以及一个仅用于鼠标点碰撞的触发器PolygonCollider2D.
PolygonCollider2D仅在需要时通过附加脚本(Baddy.cs)更新:
if(this.gameObject.GetComponent<PolygonCollider2D>()!=null){
Destroy(this.gameObject.GetComponent<PolygonCollider2D>());
}
this.gameObject.AddComponent<PolygonCollider2D>();
this.gameObject.GetComponent<PolygonCollider2D>().isTrigger=true;
Run Code Online (Sandbox Code Playgroud)
是的,这是不好的做法,但它完成了工作.它完美地工作:在游戏的场景视图中我可以暂停并看到我们的baddy预制件上确实存在多边形对撞机.
在另一个附加脚本(CollisionHandler.cs)中,我们检查我们的baddy上的鼠标按下:
if(MousePress()){
hit=Physics2D.Raycast(level.mousePoint, Vector2.zero, 0f);
if(hit&&hit.collider==this.gameObject.GetComponent<PolygonCollider2D>()){
print("baddy mousePress");
}
}
Run Code Online (Sandbox Code Playgroud)
然而hit.collider==this.gameObject.GetComponent<PolygonCollider2D>()结果是错误的,即使我可以打印两个hit.collider并且this.gameObject.GetComponent<PolygonCollider2D>()在我们之前立即打印if(MousePress())并将它们定义为:
D_Prefab(Clone) (UnityEngine.PolygonCollider2D)
Run Code Online (Sandbox Code Playgroud)
它们不能是不同的PolygonColliders,因为一次只能有一个,因为我们的Baddy脚本同时删除并创建了PolygonCollider.
什么想法可能会出错?
这是我的flash游戏没有vcam或任何其他屏幕移动方法:http: //www.swfcabin.com/open/1389129611我使用hitTestPoint方法来处理我的碰撞.但是,当我尝试添加一个vcam时,结果是:http://www.swfcabin.com/open/1389130109这有 什么奇怪的吗?我用于vcam的代码是:
stage.addEventListener(Event.ENTER_FRAME,update_vcam);
function update_vcam(e:Event){
vcam.x=char.x;
vcam.y=char.y;
}
Run Code Online (Sandbox Code Playgroud)
vcam的尺寸与舞台完全相同(并且与舞台完全对齐).我使用了"Jazza"的虚拟相机.我也尝试了许多其他的vcams,但每个人都被证明是混乱的.我曾经在as2天里一直使用vcams,他们总是工作.这不是我尝试过的唯一方法.我也试过移动地面而不是角色.结果如下:http: //www.swfcabin.com/open/1389130683 我完全不知道发生了什么.有任何想法吗?
Drake Swartzy
我真的花了一整天的时间研究 Unity C# Raycasting 的光线,但我没有什么可展示的。我研究了教程、在线资源、堆栈溢出问题,甚至逐字逐句复制了脚本,希望 Unity 最终能够识别我实际使用 Raycast 的所有尝试。这是一个使用 Raycast 的脚本示例,它对我不起作用:
if (mouseDown) {
print ("mouse is down");
Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
RaycastHit hit;
if (Physics.Raycast(ray, out hit)) {
print ("response???");
}
}
Run Code Online (Sandbox Code Playgroud)
我觉得这应该有效......但事实并非如此。mouseDown 正在正常工作,但是当我单击我的对象时,它拒绝确认从我的鼠标位置到对象的射线命中。我还应该提到该项目是二维的。有什么建议?