用户A正在Android或iOS设备上运行您的应用.用户A可以自动查找并与附近的其他(<20米?)用户B和C(跨平台)进行通信,无论他们是在运行Android还是iOS,并且没有任何用户具有互联网连接(离线).
我相信这是一个常用的功能,对这个问题有一个明确的答案对移动开发社区来说是一个很大的好处.
如何实现所需的功能?
它甚至可能吗?
答:是的.像Firechat和Spaceteam这样的应用程序可以做到这一点,因此它必须是可能的.
Multipeer:仅限iOS,无法实现跨平台.
Alljoyn:iOS绑定只是Objective-C,没有实现Single Codebase.
Mono.Zeroconf:据说需要单独的平台实现,所以不要实现单一代码库?
Open Garden SDK:将是一个很好的解决方案,除了它实际上还不存在.
我几天来一直在研究这个话题,但我还没有找到明确的答案.部分原因可能是人们使用了很多不同的术语,如网状网络,ad-hoc网络,zeroconf,DNS-SD等,这使得搜索变得困难.
如果你对我在stackoverflow和其他地方所做的一些研究感兴趣,这里有一些注释和链接(我在这篇文章中直接放入的链接数量有限).
我想在两个单独的列中并排查看相同C#代码文件的不同部分(编辑器的水平分割).我可以将编辑器置于两列模式,但我找不到在两列中同时查看文件的方法.
我通过搜索找到的相关解决方案似乎适用于以前版本的Visual Studio.他们引用了VS 2017中不存在的窗口 - >新窗口等菜单选项.
在Visual Studio 2017中,无法在两列中查看同一文件的不同部分吗?
我试图解决的问题在概念上非常简单。我将从游戏的角度解释它,但我相信这个概念适用于任何具有输入、效果关系的对象:
能力由输入对象列表和效果对象列表组成。输入对象定义了用户交互的类型(如选择地面瓦片或选择一个单元),每个输入对象将从用户那里获得某种类型的目标(例如瓦片或单元)。效果对象定义对特定类型目标的效果(例如移动到地面瓷砖或损坏一个单位)。
在代码中使用能力包括:
因此,定义能力的示例可能是:
Ability: {
Inputs: {
Select Tile,
Select Unit
}
Effects: {
Move to (input 1),
Deal 10 damage (input 2)
}
}
Run Code Online (Sandbox Code Playgroud)
理想情况下,我想让从输入到效果类型安全的映射,因为每种类型的效果都有一种它所期望的目标数据类型(例如平铺或单元)。这是我编写的代码示例,用于表示代码中的动作、输入和效果对象:
public class AbilityData
{
List<InputData<Target>> inputs;
List<AbilityEffect> effects;
public void exampleCreate()
{
BaseInputData<Tile> input = new TileSelectData();
inputs.Add(input);
effect = new List<AbilityEffect>();
BaseAbilityEffect<Tile> effect = new BaseAbilityEffect<Tile>(new TileEffect(), input);
effects.Add(effect);
}
public void exampleRun()
{
foreach (InputData<AbilityInput> input in inputs)
{
input.promptInput();
}
foreach (AbilityEffect effect in effects)
{
effect.execute();
} …Run Code Online (Sandbox Code Playgroud) c# ×2
android ×1
casting ×1
covariance ×1
generics ×1
ios ×1
macos ×1
networking ×1
type-safety ×1
zeroconf ×1