Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/unity3d/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在db中移动平铺/文本框存储位置_C#_Unity3d_Godot - Fatal编程技术网

C# 在db中移动平铺/文本框存储位置

C# 在db中移动平铺/文本框存储位置,c#,unity3d,godot,C#,Unity3d,Godot,我有25个房间,每个房间都有可以容纳一个或多个对象的位置,并且是唯一标识的。我想为对象创建一个拖放系统,该系统将在SQL数据库中存储位置,该数据库已经设置好并正在使用。我当前正在查找对象,然后手动键入所需位置。我正在寻找一种图形化的拖放方式来实现这一点。 我不知道从哪里开始实现这一目标。我甚至在想也许游戏引擎是个不错的选择,Godot或Unity。这是我所想的示例图片。所以你有房间和仓库。每个文件室包含零个或多个存储数据项,每个存储数据项仅存储在一个文件室 这是一个简单的一对多关系。在关系数据库

我有25个房间,每个房间都有可以容纳一个或多个对象的位置,并且是唯一标识的。我想为对象创建一个拖放系统,该系统将在SQL数据库中存储位置,该数据库已经设置好并正在使用。我当前正在查找对象,然后手动键入所需位置。我正在寻找一种图形化的拖放方式来实现这一点。
我不知道从哪里开始实现这一目标。我甚至在想也许游戏引擎是个不错的选择,Godot或Unity。这是我所想的示例图片。

所以你有
房间
仓库。每个
文件室
包含零个或多个
存储数据项
,每个
存储数据项
仅存储在一个
文件室

这是一个简单的一对多关系。在关系数据库中,这是通过为“多”端的项提供一个外键来实现的,外键引用它所属项的主键

在您的情况下:
Rooms
StoredItems
都会获得唯一的主键
StoredItems
还获取一个外键,该外键指向存储该项目的
房间的Id

设置数据库的一种简单而直观的方法是使用nuget package实体框架

如果使用实体框架,则可以使用标准C#执行几乎所有查询。实体框架将它们转换为数据库语言,通常是SQL

如果使用实体框架,您将拥有以下类:

public class Room
{
    public int Id {get; set;}
    public string Name {get; set;}
    ... // other properties

    // every Room contains zero ore more StoredItems (one-to-many)
    public virtual ICollection<StoredItem> StoredItems {get; set;}
}

public class StoredItem
{
    public int Id {get; set;}
    ... // other properties

    // Every StoredItem is stored in exactly one Room, using foreign key
    public int RoomId {get; set;}
    public virtual Room Room {get; set;}
}
从这些表中,您可以看到StoredItem[04]存储在房间[02]中,房间[01]包含两个StoredItem,即StoredItem[01]和[02]


如果您想了解有关实体框架的更多信息,请访问

精彩的幕后逻辑解释。至于实现UI,这可以通过在Godot中设置StoredItems
pickable\u input=true来实现。这将允许您检测其中的鼠标事件并更新特定项目的位置<代码>位置=获取全局鼠标位置()
每帧-创建拖动效果。
Room         StoredItem  
Id ..        Id RoomId ...
01 ...       01 01
02 ...       02 01
Etc.         03 03
             04 02
             05 02
             06 05