生成错误的代码:
void Update()
{
if (Input.touchCount > 0)
{
RaycastHit2D hit = Physics2D.Raycast(Camera.main.ScreenToWorldPoint(Input.GetTouch(0).position), Vector2.zero);
if (hit && hit.collider != null && hit.collider.name == "leftTapArea")
{
hit.transform.name = "Hit";
}
}
}
它说这个字符串有问题:
RaycastHit2D hit = Physics2D.Raycast(Camera.main.ScreenToWorldPoint(Input.GetTouch(0).position),Vector2.zero);
错误:
NullReferenceException:未将对象引用设置为对象的实例 leftScript.Update()(在Assets / leftScript.cs:16)
答案 0 :(得分:10)
在代码中唯一可以返回null的是 @Entity
@Table(name="ITEM")
public class Item extends AbstractTimestampEntity{
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
@Column(name="itemId", nullable=false)
private long itemId;
@ManyToOne
@JoinColumn(name="merchantId", nullable=false)
private Merchant merchant;
@Column(name="name", length=45)
private String name;
@Column(name="description" , length=200)
private String description;
@Column(name="price")
private double price;
public Item(){} // getters & setters
。这意味着@Entity
@Table(name="MENU")
public class Menu {
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
@Column(name="menuId", nullable=false)
private long menuId;
@ManyToOne
@JoinColumn(name="merchantId", nullable=false)
private Merchant merchant;
@Column(name="name", length=45)
private String name;
@ManyToMany
@JoinTable(name="MENU_ITEM", joinColumns = {
@JoinColumn(name="menuId", nullable=false, updatable=false)},
//@JoinColumn(name="merchant.merchantId", nullable=false, updatable=false)},
inverseJoinColumns = { @JoinColumn(name="itemId", nullable=false, updatable=false)})
// @JoinColumn(name="merchantId", nullable=false, updatable=false)})
private List<Item> items = new ArrayList<Item>(); // constructor, getters & setters
是Camera.main.ScreenToWorldPoint
。要初始化Camera.main
,相机必须具有null
标记。
选择Camera GameObject,然后将标签更改为MainCamera。
如果您不希望自己的相机位于MainCamera标签中,您也可以直接通过Camera.main
找到机智,然后从中获取MainCamera
组件。
GameObject.Find
答案 1 :(得分:1)
确保你的场景中有一个活跃的游戏对象,其中包含Camera
组件和标记&#34; MainCamera&#34;