小编Tha*_*anh的帖子

Unity C#:Camera.main返回null?

有一个免费的C#代码示例,可以将对象移动到Unity 3D中的鼠标单击位置,如下所示:

public GameObject cube;
Vector3 targetPosition;

void Start () {

    targetPosition = transform.position;
}
void Update(){

    if (Input.GetMouseButtonDown(0)){
        Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
        RaycastHit hit;

        if (Physics.Raycast(ray, out hit)){
            targetPosition = hit.point;
            cube.transform.position = targetPosition;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

==============

问题是在运行时,Unity在该行生成错误:

Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);

错误消息是: NullReferenceException:对象引用未设置为对象的实例 ...

根据某人的建议,我刚刚在上面的示例代码中添加了一些调试语句,发现"Camera.main"为NULL.因此,这是Unity生成上述错误消息的主要原因.:-)

请注意,整个游戏项目我只有1个摄像头.

这是我的"主摄像头"的捕获图像,已经启用并由Unity自动标记为"主摄像头".但是,这也无法解决问题.

在此输入图像描述


最终更新:

我刚刚发现stackoverflow用户" Programmer "已经在以下网址发布了一个很好的答案:

Raycast返回null

当我使用他的代码"GameObject.Find("NameOfCameraGameObject")时,这个答案解决了我的问题.GetComponent(); "

所以,我同意我的上述问题有点复制.但是,当我问我是否应该删除我的问题时,用户" 程序员 "建议我可以保持这个问题,因为它可能仍然对其他人有用.(同样,我已经通过上面的用户" 程序员 " 将链接发布到了正确的答案).

我的结论是:奇怪的是,即使Unity自动启用标签"MainCamera",代码仍然认为"Camera.Main"为空.因此,我必须使用用户" Programmer " 编写的代码来解决问题.

非常感谢用户" 程序员 "和其他优秀的stackoverflow用户帮助我解决这个问题.:-)

c# macos unity-game-engine ipad ios

9
推荐指数
2
解决办法
6910
查看次数

在向Apple App Store提交iOS游戏和应用程序时,如何跳过对iPad,iPad 2和iPad 3的支持?

我正在我的REAL设备上开发和测试我的iOS游戏,这是iPad 4(第四代),它在REAL iPad 4上运行良好.但是,我还没有在iPad 1等真正的旧iPad上测试游戏. iPad 2甚至iPod.所以,我想有3个相互关联的问题如下:

(1)Xcode Simulator?
真正的iPad 1只有256 Mb的RAM,真正的iPad 2只有512 Mb的RAM.此外,这两款设备的处理器肯定比新iPad的处理器慢.(很遗憾,我没有钱购买iPad 1和iPad 2进行测试.)

那么,如果我使用Xcode模拟器在这两个设备上测试我的游戏,模拟器是否会准确设置真正反映这些设备的RAM,处理器速度和硬件性能限制的测试条件?如果有办法,请告诉我如何做到这一点?

(老实说,我认为XCODE模拟器只是:它是一个模拟器而不是模拟器.因此,我怀疑XCODE模拟器能够准确地模拟真实iPad 1和iPad 2设备上的测试条件,因此,我我担心我对XCODE模拟器的测试不准确.例如,模拟器可能会显示游戏运行正常,但实际上,当用户在真正的iPad 1和2上安装该游戏时,它可能会有一些滞后的问题用动画来说至少......)

(2)跳过iPad 1,iPad 2,iPad3和iPod?
有没有办法告诉Apple我只想将我的游戏发布到iPad 4(第四代)和新一代iPad,我不想发布我的iPad 1和iPad 2游戏?

(3)Apple规则?
或者,在开发商可以在App商店发售游戏之前,Apple是否会执行所有iPad游戏必须适用于所有iPad(包括iPad 1和iPad 2)的规则?

iphone xcode ipad ios ios-simulator

1
推荐指数
1
解决办法
515
查看次数

C++:不调用main函数中的join()函数,可以执行线程吗?

请帮我解决一个关于以下代码输出的简单问题。

我认为只有在调用 join() 或 detach() 函数时才会执行线程。

因此,我希望输出仅打印“暂停 2 秒结束,ID = 59306 ”,而不是打印“暂停 1 秒结束,ID = 10218 ”,因为我认为只有线程 2会被执行,而线程 1会被执行。不会执行。但是我错了。

实际上,输出实际上打印了上述两行,这意味着线程 1 和 2 都被执行。是真的吗?

您能向我解释一下代码如何实际执行两个线程吗?

=========================

#include <iostream>       // std::cout
#include <thread>         // std::thread, std::this_thread::sleep_for
#include <chrono>         // std::chrono::seconds
 
void pause_thread(int n) 
{
  std::this_thread::sleep_for (std::chrono::seconds(n));
  std::cout << "pause of " << n << " seconds ended , ID = " << std::this_thread::get_id()  << std::endl;
}
 
int main() 
{
  std::cout << "Spawning 2 …
Run Code Online (Sandbox Code Playgroud)

c++ multithreading

1
推荐指数
1
解决办法
1043
查看次数

标签 统计

ios ×2

ipad ×2

c# ×1

c++ ×1

ios-simulator ×1

iphone ×1

macos ×1

multithreading ×1

unity-game-engine ×1

xcode ×1