Я исследую, как генерировать среды в Unity, используя GIS
данные в формате KML
. Я наткнулся на плагин SharpKML
, и он, кажется, идеально подходит для моих нужд.
Однако я испытываю странную ошибку в том, что Unity выдает ошибку
«CS0246: не удалось найти тип или имя пространства имен arp SharpKml» (отсутствует директива using или ссылка на сборку?) »
Ссылка добавлена в VS, и у меня есть using SharpKML.Dom
и using SharpKML.Engine
записи, которые без проблем компилируются в VS.
Но Unity по-прежнему выдает ошибку.
Я установил через NuGet
, а также скачал исходный код SharpKML
, перестроил dll
на своем компьютере и получил прямую ссылку без изменений. VS также, кажется, периодически сбрасывает ссылку.
Вы уже сталкивались с этой проблемой раньше или у вас есть идеи, что ее вызывает?
Версия Unity 2019.1.4f1
, а версия VS 2017
работающий фреймворк 4.7.03062
Я пересоздал проект на другой машине в другой сети и столкнулся с той же проблемой.
using UnityEngine;
using System.IO;
using System.Linq;
using SharpKml.Dom;
using SharpKml.Engine;
public class RenderKML : MonoBehaviour
{
public string KLMPath;
// Start is called before the first frame update
void Start()
{
string kmlPth = "Assets\\kml";
GetKMLFiles(kmlPth);
}
private void GetKMLFiles(string pth)
{
if (pth != null)
{
DirectoryInfo dir = new DirectoryInfo(pth);
FileInfo[] info = dir.GetFiles("*.kml");
foreach (FileInfo f in info)
{
print(f.FullName);
GetKMLData(f);
}
}
}
private void GetKMLData(FileInfo fI)
{
// This will read a Kml file into memory.
Stream fs = new FileStream(fI.FullName, FileMode.Open);
KmlFile file = KmlFile.Load(fs);
Kml kml = file.Root as Kml;
if (kml != null)
{
foreach (var placemark in kml.Flatten().OfType<Placemark>())
{
print(placemark.Name);
}
}
}
}