Hololens开发(6) 引用、路径

1.UWP类使用

在Unity中双击脚本打开VS,项目中并没有UWP的程序集,无法使用UWP的类。


同时无论是NoTookit还是NoTookit.Editor都是无法添加引用的


生成后的项目中就有了


可以添加引用了


多了一些Window的引用,可以使用UWP的类了。不过因为修改的是同一个脚本文件,要加上

#if UNITY_UWP

//UWP类

#endif

不然,回到Unity中会报错,找不到这些类的。

也就是说Hololens的Unity开发,可能需要分成两部分,一部分是在Unity环境中的,一部分是在Hololens环境中的。

2.添加类库(UWP)

在UWP解决方案中添加一个UWP类库



namespace ClassLibrary1
{
    public class Person
    {
        public string Id { get; set; }
        public string Name { get; set; }

        public override string ToString()
        {
            return string.Format("Id:{0},Name:{1}", Id, Name);
        }
    }
}

将生成中的路径改成 Unity项目下的Asset/Plugins/里面,生成。


似乎Editor只能用3.5以下的dll,以前一般添加的c#类库都是3.5,总之Unity环境下脚本中无法使用该dll。

再生成一下,


Assembly-CSharp的引用中就多了ClassLibrary1。

就可以在脚本中使用ClassLibrary1了


不过回到Unity环境下,就不能用了。



用前面的#if UNITY_UWP区分开两种环境就相互没有影响了。


原本以为可以通过修改类库的.net版本也行,结果类库项目的属性本身没有修改到3.5的地方。

将类库删除重新创建一个3.5的类库,也是一样不行。

想到一个方案,创建两个项目,1个是刚刚的UWP类库,一个是传统的c#的类库(3.5的),生成在plugins中的不同子文件夹下,这样在两个环节中就都有ClassLibrary1了。


结果



但是生成项目时出问题了


看来是重名冲突了。

如何让这两个dll不冲突呢?

不能放到Edtor文件夹中,直接在脚本中找不到dll了。

改名吧(直接修改dll名称)


可以生成了,但是



应该是标识重复了导致的,修改类库项目名称吧。其实类库名称不用改,改生成的程序集名称就好了。两个类库项目的程序集名称都改掉,生成dll。


生成hololens项目,不行,类重复了。


刚刚只是改dll名称的时候能够生成的啊。难道是刚刚实际上只读取了一个dll,或者说相同标识的,一个无效或者后面覆盖前面的之类的。

有个办法,我之所以搞这些主要是不想在业务逻辑代码中(这里是脚本文件中)到处是#if UNITY_UWP。那样的话在两个类库自身中添加#if就好了。一个添加#if UNITY_UWP 一个添加 #if !UNITY_UWP,生成。还是一样,弄错了,#if是预编译头,仅仅是控制代码在当前环境下会不会编译,结果两个类库在自己的环境下都是有效的,还是都编译到dll中。

最终还是只能将类放到unity中,



这样在脚本中和在UWP中都没问题了。

我搞这些还想以dll为单位复用以前的代码,用这种方式的话需要把需要的类文件拷贝到unity项目中了。

算了,先这样吧。

3.路径信息

脚本

using System;
using UnityEngine;
using UnityEngine.UI;
#if UNITY_UWP
using Windows.Storage;
#endif

public class BasicInfo : MonoBehaviour {

    public Text text;
	// Use this for initialization
	void Start () {
        string info = string.Format(" dataPath:{0}\n persistentDataPath:{1}\n streamingAssetsPath:{2}\n temporaryCachePath:{3}\n", Application.dataPath, Application.persistentDataPath,Application.streamingAssetsPath,Application.temporaryCachePath);
        Debug.Log(info);
        text.text = info;
#if UNITY_UWP

        string info2 = string.Format("BaseDirectory:{0}\nLocalFolder:{1}\nRoamingFolder:{2}\nTemporaryFolder:{3}\nLocalCacheFolder:{4}\nSharedLocalFolder:{5}", AppContext.BaseDirectory, ApplicationData.Current.LocalFolder.GetPath(), ApplicationData.Current.RoamingFolder.GetPath(), ApplicationData.Current.TemporaryFolder.GetPath(), ApplicationData.Current.LocalCacheFolder.GetPath(), ApplicationData.Current.SharedLocalFolder.GetPath());
	    text.text += "\n"+info2;
#endif
	}
}

#if UNITY_UWP
public static class Extension
{
    public static string GetPath(this StorageFolder folder)
    {
        if (folder == null)
        {
            return "null";
        }
        return folder.Path;
    }
}
#endif

PC运行:

dataPath:D:/SoftwareProjects/Hololens/UnityProjects/NoToolkit/NoToolkit/Assets
 persistentDataPath:C:/Users/caiwanwei/AppData/LocalLow/DefaultCompany/NoToolkit
 streamingAssetsPath:D:/SoftwareProjects/Hololens/UnityProjects/NoToolkit/NoToolkit/Assets/StreamingAssets
 temporaryCachePath:C:/Users/CAIWAN~1/AppData/Local/Temp/DefaultCompany/NoToolkit

Hololens运行:

 dataPath:C:/Data/Users/DefaultAccount/AppData/Local/DevelopmentFiles/NoToolkitVS.Debug_x86.caiwanwei/Data
 persistentDataPath:C:/Data/Users/llhsw/AppData/Local/Packages/NoToolkit_pzq3xp76mxafg/LocalState
 streamingAssetsPath:C:/Data/Users/DefaultAccount/AppData/Local/DevelopmentFiles/NoToolkitVS.Debug_x86.caiwanwei/Data/StreamingAssets
 temporaryCachePath:C:/Data/Users/llhsw/AppData/Local/Packages/NoToolkit_pzq3xp76mxafg/TempState
BaseDirectory:C:\Data\Users\DefaultAccount\AppData\Local\DevelopmentFiles\NoToolkitVS.Debug_x86.caiwanwei
LocalFolder:C:\Data\Users\llhsw\AppData\Local\Packages\NoToolkit_pzq3xp76mxafg\LocalState
RoamingFolder:C:\Data\Users\llhsw\AppData\Local\Packages\NoToolkit_pzq3xp76mxafg\RoamingState
TemporaryFolder:C:\Data\Users\llhsw\AppData\Local\Packages\NoToolkit_pzq3xp76mxafg\TempState
LocalCacheFolder:C:\Data\Users\llhsw\AppData\Local\Packages\NoToolkit_pzq3xp76mxafg\LocalCache
SharedLocalFolder:null
以前UWP中测试 ApplicationData

LocalFolder:C:\Users\caiwanwei\AppData\Local\Packages\9428c709-abf7-4e8f-9657-9cddf79fc61e_w7gt0ng89zrh4\LocalState

RoamingFolder:C:\Users\caiwanwei\AppData\Local\Packages\9428c709-abf7-4e8f-9657-9cddf79fc61e_w7gt0ng89zrh4\RoamingState

TemporaryFolder:C:\Users\caiwanwei\AppData\Local\Packages\9428c709-abf7-4e8f-9657-9cddf79fc61e_w7gt0ng89zrh4\TempState

LocalCacheFolder:C:\Users\caiwanwei\AppData\Local\Packages\9428c709-abf7-4e8f-9657-9cddf79fc61e_w7gt0ng89zrh4\LocalCache
persistentDataPath : LocalState => LocalFolder,LocalCacheFolder
temporaryCachePath:TempState => TemporaryFolder

3.Application.dataPath信息(子文件,子文件夹)

Directory:
C:/Data/Users/DefaultAccount/AppData/Local/DevelopmentFiles/NoToolkitVS.Debug_x86.caiwanwei/Data\Resources
Files:
C:/Data/Users/DefaultAccount/AppData/Local/DevelopmentFiles/NoToolkitVS.Debug_x86.caiwanwei/Data\globalgamemanagers
C:/Data/Users/DefaultAccount/AppData/Local/DevelopmentFiles/NoToolkitVS.Debug_x86.caiwanwei/Data\globalgamemanagers.assets
C:/Data/Users/DefaultAccount/AppData/Local/DevelopmentFiles/NoToolkitVS.Debug_x86.caiwanwei/Data\level0
C:/Data/Users/DefaultAccount/AppData/Local/DevelopmentFiles/NoToolkitVS.Debug_x86.caiwanwei/Data\level0.resS
C:/Data/Users/DefaultAccount/AppData/Local/DevelopmentFiles/NoToolkitVS.Debug_x86.caiwanwei/Data\managedAssemblies.txt
C:/Data/Users/DefaultAccount/AppData/Local/DevelopmentFiles/NoToolkitVS.Debug_x86.caiwanwei/Data\nativePlugins.txt
C:/Data/Users/DefaultAccount/AppData/Local/DevelopmentFiles/NoToolkitVS.Debug_x86.caiwanwei/Data\resources.assets
C:/Data/Users/DefaultAccount/AppData/Local/DevelopmentFiles/NoToolkitVS.Debug_x86.caiwanwei/Data\sharedassets0.assets
C:/Data/Users/DefaultAccount/AppData/Local/DevelopmentFiles/NoToolkitVS.Debug_x86.caiwanwei/Data\sharedassets0.assets.resS


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值