Unity中Web.Config文件的配置与调用
配置webconfig
配置webconfig记录下webconfig的配置(复制很久的笔记):1、配置Session在url传递在web.config中的 <system.web> 节点下添加,⼿动修改session的相关设置<sessionState timeout="5" cookieless="true"> </sessionState>2、配置上传⽂件⼤于4M,⾥⾯是字节数,⽐如下⾯10M是1024*1024*10<system.web><httpRuntime targetFramework="4.5" maxRequestLength="10485760"/></system.web>3、⽐如上传1g的内容。
请求的筛选模块是被直接拒绝,不会到后台指定的页⾯的,跟上⾯的界⾯配置要相同才⾏<configuration><system.webServer><security><requestFiltering><requestLimits maxAllowedContentLength="1073741824"></requestLimits></requestFiltering></security></system.webServer></configuration>4、⾃定义⼀般处理程序类及配置①新建⼀个类,继承IHttpHandler,实现⾥⾯的ProcessRequest⽅法与IsReusable属性。
属性中如果get{return false;}表⽰每次浏览器的请求都会新创建这个⼀般处理程序的类的对象,为true每次浏览器请求都是重⽤第⼀次创建的类的对象②⽐如⽤户需要xxx.hh这样⼦在浏览器中访问,我们新建的这个类继承IhttpHandler接⼝之后实现⾥⾯的代码专门接管处理这样的需求。
Unity3d 游戏开发之Web Player 的server端联网配置
Unity3d 游戏开发之Web Player 的server端联网配置新游戏出了第一个能跑完流程的版本,不得不佩服Unity3D强大的功力,PC、MAC OS、Linux、IOS、Android、web player,前天刚发布的unity3d 4.2版本还支持WINDOWS PHONE、Black Barry这些平台统统一键打包,so easy!不过在打包部署Web Player时,在联网方面出现了一点麻烦,算是顺风顺水过程当中的一个小插曲吧!所以又可以针对Unity3d Web Player 的server 端联网配置写一随笔咯。
以SmartFoxServer2X官方的Unity3d Example ”tris“为例,部署好服务器之后,在Unity 端跑游戏肯定没问题,成功连接。
但是当切换到Web Player打包方式,并且确定你连接的不是本机服务器,即--服务器端地址不为“LocalHost”或“127.0.0.1”时,会发现一个很“有趣”的现象(其实一点都不有趣啦,困扰哥好久-_-!~)--死活连接不上服务器了,不论是直接在Unity3D Editor中跑游戏还是打包好Web Player程序在浏览器中跑。
其中主要的错误描述为:[SFS DEBUG] TCPSocketLayer: General exception on connection:Unable to connect, as no valid crossdomain policy was foundat .Sockets.Socket.Connect_internal (IntPtrsock, .SocketAddress sa, System.Int32& error,Boolean requireSocketPolicyFile) [0x00000] in <filenameunknown>:0at .Sockets.Socket.Connect (.EndPointremoteEP, Boolean requireSocketPolicy) [0x00000] in<filename unknown>:0at .Sockets.Socket.Connect (.EndPointremoteEP) [0x00000] in <filename unknown>:0at .Sockets.Socket.Connect (.IPAddressaddress, Int32 port) [0x00000] in <filename unknown>:0at Sfs2X.Core.Sockets.TCPSocketLayer.ConnectThread ()[0x00000] in <filename unknown>:0经过摸索查阅资料后发现,这都是Unity WebPlayer Security SandBox机制的问题。
unity3D技术之配置 Unity 、读取配置信息和获取对象
和Enterprise Library 的其他应用程序块一样,Unity 的行为也可以通过配置来指定。
Unity 应用程序块可以从XML 配置文件中读取配置信息。
配置文件可以是Windows Forms 应用程序的App.config 或者 应用程序的Web.config。
当然,也可以从任何其他XML 格式的文件或者其他数据源中加载配置信息。
在本文中,将和大家一起来学习Unity 配置【狗刨学习网】文件的格式、配置的读取、通过示例说明实例的获取。
1. Unity 配置文件的格式Unity 配置文件看起来像下面这样:<?xml version="1.0" encoding="utf-8" ?><configuration><configSections><section name="unity"type="Microsoft.Practices.Unity.Configuration.UnityConfigurationSection,Microsoft .Practices.Unity.Configuration" /></configSections><unity><containers ><container name="containerOne" ><types><type type="System.Data.IDbConnection,System.Data"mapTo="DorianDeng.UnityConfigurationExe.MyDefaultConnection,Dor ianDeng.UnityConfigurationExe" /><type name="baseMap"type="mon.DbConnection,System.Data"mapTo="DorianDeng.UnityConfigurationExe.MyDbConnection,Dorian Deng.UnityConfigurationExe" lifetime="Transient" /><type name="interfaceSingleton"type="System.Data.IDbConnection,System.Data"mapTo="DorianDeng.UnityConfigurationExe.MyDbConnection,Dorian Deng.UnityConfigurationExe" lifetime="Singleton"/></types><instances><add name="MyInstance1" type="System.String" value="Some value" /> <add name="MyInstance2" type="System.DateTime"value="2008-02-05T17:50:00" /></instances><extensions><!--<add type="MyApp.MyExtensions.SpecialOne" />--></extensions></container></containers></unity></configuration>1.1 配置节Unity 的配置节的名称为”unity",节处理程序的类型为Microsoft.Practices.Unity.Configuration.UnityConfigurationSection,它包含在程序集Microsoft.Practices.Unity.Configuration 中。
如何配置Config File
如何配置Config File1. 基本参数............................................................................. (2)1.1NetworkAccess ................................................................. .. (2)1.2 GlobalPrivacyEnable............................................................ .. (2)1.3 UsServiceFlow &DsServiceFlow ................................................................. (2)2. 扩展参数............................................................................. (3)2.1DownstreamFrequency ........................................................... .. (3)2.2 UpstreamChannelId.............................................................. .. (3)2.3 MaxCPE......................................................................... .. (4)2.4MaxClassifiers ................................................................ . (4)2.5 BPI 扩展参数............................................................................. . (4)AuthTimeout ................................................................... .. (4)ReAuthTimeout ................................................................. (4)AuthGraceTime.................................................................. .. (4)OperTimeout ................................................................... .. (4)ReKeyTimeout .................................................................. (4)TEKGraceTime .................................................................. .. (4)AuthRejectTimeout ............................................................. . (5)SAMapWaitTimeout .............................................................. . (5)SAMapMaxRetries................................................................ .. (5)exp:.......................................................................... . (5)2.6 Upstream Service flow参数扩展设置 (5)UsServiceFlowRef .............................................................. . (5)QosParamSetType................................................................ (5)*TrafficPriority............................................................... (6)MaxRateSustained .............................................................. . (6)MaxTrafficBurst ............................................................... . (6)MinReservedRate................................................................ . (6)MinResPacketSize .............................................................. . (6)ActQosParamsTimeout ........................................................... (6)AdmQosParamsTimeout ........................................................... . (6)MaxConcatenatedBurst .......................................................... . (6)特服设置:........................................................................... .. (7)2.7 PHS 参数设置............................................................................. (9)2.8 Us Packet Classifier参数配置............................................................................. . (10)ClassifierRef:................................................................ (10)ServiceFlowRef:............................................................... .. (10)RulePriority:................................................................. (10)ActivationState:.............................................................. . (10)IpPacketClassifier ............................................................ .. (10)IpProto:...................................................................... (10)1. 基本参数要配置一份正确的 config file,必须配置的几个必要参数是:1.1 NetworkAccess这个主要是用来描述是否需要将与 cpe 的网络连通,也就是说一旦将该参数的值设置为0,就表明从连接上该 cm的 cpe 上发送的数据在 cm端都会被丢弃的,而一旦将该参数设置为 1 后,cm和 cmts 之间就可以互相通信。
C#WinForm调用UnityWebPlayerControl控件学习笔记1
C#WinForm调⽤UnityWebPlayerControl控件学习笔记1⼯具 1.三维场景 Unity 5.0.2f1 2.开发环境Microsoft Visual Studio 2010 3.需要使⽤的控件 UnityWebPlayer Control出现的问题及解决办法: 1.安装完Unity 5.0.2f1后,通过⼯具箱->选择项->COM组件中没有找到UnityWebPlayer Control,我解决的办法:在⽹上下载了⼀个UnityWebPlayer.exe⽂件,安装后,就能 找到。
2.集成步骤: 1.打开Unity 5.0.2f1创建⼀个新⼯程。
Projects-->单击右侧 [New Project] 在新窗体的Project Name栏⾥输⼊UnityTest01作为项⽬名字,单击[Create Project]。
2.我通过GameObject->Particle System 创建了⼀个离⼦系统,别的什么也没做。
3.编译项⽬:File->Build Settings->Web Player->复选离线部署 offline deployment 单击Build按钮,选择⼀个⽂件夹⽤来存放编译的⽂件:test01 编译完成后得到:包含test01.unity3d在内的4个⽂件。
⽂件路径:E:\UnityProject\UnityTest01\test01\test01.unity3d 4.Visual Studio 2010创建窗体应⽤程序。
在Form1中添加⼀个axUnityWebPlayer1控件。
在属性窗⼝中找到属性:src,把上⾯的路径粘贴上去。
运⾏窗体程序,即可加载场景。
unity5打包机制下,一种资源打ab和资源管理的方案
unity5打包机制下,⼀种资源打ab和资源管理的⽅案unity5打包机制下,⼀种资源打ab和资源管理的⽅案。
1.打ab: 1.设置平台 2.清楚所有资源的assetbundlename: string[] abNameArr = AssetDatabase.GetAllAssetBundleNames(); AssetDatabase.RemoveAssetBundleName(abNameArr[i],true); 3.创建ab⽬录 4.根据配置把需要打包的资源找出来,对每⼀个setAbName 5.调⽤BuildPipeline.BuildAssetBundles(ab⽂件夹路径,BuildAssetBundleOptions.DeterministicAssetBundle,EditorUserBuildSettins.activeBuildTarget); 6.完成,但这⾥要对第4点做⼀些说明,因为依赖资源: 我们可以选择⼀种简单粗暴的⽅式处理依赖资源:搞⼏个公共依赖assetbundle,把⼀些公共资源打到这⼏个公共ab中,具体就是: 在第4步,我们设置⼀个资源的abName后,对其依赖进⾏: string[] deps = AssetDatabase.GetDependencies(sourcePath); if (deps[i] 需要打⼊公共依赖1) AssetImporter aIt = AssetImporter.GetAtPath(deps[i]); aIt.assetBundleName = 公共依赖1.assetBundle. if (deps[i] 需要打⼊公共依赖2) ... 其他的依赖就不必继续分离了,即打到各个资源的ab⾥,虽然会增加ab的⼤⼩,但依赖资源管理会⽅便很多。
2.资源管理: 先加载各个公共依赖到内存,并且⼀直引⽤这不unload,其他正式资源加载时⾃⼰加载对应的ab即可,⽆需加载依赖了。
unity wwise的使用方法
unity wwise的使用方法Unity 是一款常用的游戏开发引擎,而 Wwise 则是一款专业的音频引擎。
在游戏开发过程中,音频的处理和播放是非常重要的一环。
本文将介绍如何在 Unity 中使用 Wwise 进行音频的集成和管理。
在 Unity 中导入 Wwise 插件。
打开 Unity 项目,进入 Asset Store,搜索并下载Wwise Unity Integration 插件。
下载完成后,将插件导入到 Unity 项目中。
接下来,在Unity 中进行 Wwise 的设置。
在Unity 菜单栏中选择Window -> Wwise Launcher,打开Wwise Launcher 窗口。
在Wwise Launcher 中,选择Unity Integration,点击Generate SoundBanks 按钮,生成音频资源。
在 Unity 中创建音频事件(Event)。
在 Hierarchy 窗口中,右键点击空白处,选择Wwise -> Create -> Event。
在Inspector 窗口中,可以设置音频事件的名称和其他属性。
然后,将音频文件拖拽到音频事件的列表中,即可将音频文件与事件关联起来。
在代码中播放音频事件。
在需要播放音频的地方,可以使用以下代码来触发音频事件的播放:```csharpusing AK.Wwise;...public AK.Wwise.Event MyAudioEvent;...void PlayAudioEvent(){MyAudioEvent.Post(gameObject);}```在上述代码中,首先需要导入AK.Wwise 命名空间。
然后,创建一个公共的音频事件对象,并在Inspector 窗口中将音频事件对象拖拽到该脚本中。
最后,在需要播放音频的函数中,调用音频事件对象的 Post 方法即可触发音频的播放。
在Wwise 中进行音频的混音和处理。
Unity加载配置文件的两种方式
<?xml version=”1.0″ encoding=”utf-8″ ?> <configuration> <configSections> <section name=”unity” type=”Microsoft.Practices.Unity.Configuration.UnityConfigurationSection, Microsoft.Practices.Unity.Configuration”/> </configSections>
登录后才能查看或发表评论立即登录或者逛逛博客园首页
Unity加 载 配 置 文 件 的 两 种 方 式
1、当前AppDomain的配置文件(App.config或Web.config,通过AppDomain.CurrentDomain.SetupInformation.ConfigurationFile获得):
1 IUnityContainer unityContainer = new UnityContainer(); 2 unityContainer.LoadConfiguration();
LoadConfiguration默认会加载没有命名的container,可以通过传递特定的containerName加载指定的container。
<unity xmlns=”/practices/2010/unity”> <container>
</conta”container1″>
</container> </unity> </configuration>
LoadConfiguration是IUnityContainer的扩展函数,在Microsoft.Practices.Unity.Configuration.dll中的Microsoft.Practices.Unity.Configuration namespace下定义的UnityContainerExtensions。
web.config配置详细说明
web.config配置详细说明(⼀).Web.Config是以XML⽂件规范存储,配置⽂件分为以下格式1.配置节处理程序声明特点:位于配置⽂件的顶部,包含在<configSections>标志中。
2.特定应⽤程序配置特点: 位于<appSetting>中。
可以定义应⽤程序的全局常量设置等信息.3.配置节设置特点: 位于<system.Web>节中,控制运⾏时的⾏为.4.配置节组特点: ⽤<sectionGroup>标记,可以⾃定义分组,可以放到<configSections>内部或其它<sectionGroup>标记的内部.(⼆).配置节的每⼀节1.<configuration>节根元素,其它节都是在它的内部.2.<appSetting>节此节⽤于定义应⽤程序设置项。
对⼀些不确定设置,还可以让⽤户根据⾃⼰实际情况⾃⼰设置⽤法:I.<appSettings><add key="Conntction" value="server=192.168.85.66;userid=sa;password=;database=Info;"/><appSettings>定义了⼀个连接字符串常量,并且在实际应⽤时可以修改连接字符串,不⽤修改程式代码.II.<appSettings><add key="ErrPage" value="Error.aspx"/><appSettings>定义了⼀个错误重定向页⾯.III.<appSettings configSource="source/new.xml"/>可以通过新的XML来扩展配置内容。
new.xml写法为:<?xml version="1.0" encoding="utf-8" ?><appSettings><add key="" value="|"/></appSettings>3.<compilation>节格式:<compilation defaultLanguage="c#" debug="true" />I.default language: 定义后台代码语⾔,可以选择C#和两种语⾔.II.debug : 为true时,启动aspx调试;为false不启动aspx调试,因⽽可以提⾼应⽤程序运⾏时的性能。
config设置
config设置关于配置文件选项为配置文件输入所需的设置,可以预设环境选项和其它全局设置。
要设置配置文件选项,使用“选项”对话框(“实用工具”>“选项”)。
本帮助模块含有一个按字母顺序显示每一选项或相关选项组的配置选项列表:·配置选项名称。
·相关变量或值。
选项的缺省值显示为斜体。
·简单说明。
accuracy_lower_bound 数值(在1.0e-6和1.0e-4之间)输入一个精确值来覆盖缺省下限0.0001。
上限固定为0.01add_java_class_path <搜索路径>此选项涉及到有关JAVA环境变量CLASSPATH的选项值,它用于查找J-Link程序中使用的类。
可在同一行上指定多个搜索路径,在UNIX中用“:”隔开,在Windows NT中用“;”隔开。
设定此选项后,启动第一个J-Link应用程序时才会生效add_weld_mp yes, noyes - 系统在计算质量属性时,包括焊接。
no - 系统在计算质量属性时,排除焊缝。
allow_anatomic_features yes, no将此配置文件现象设置为yes,使得下列选项可用:“扭曲”菜单中:“局部拉伸”、“半径圆顶”、“截面圆盖”、“耳”、“唇”。
“实体”菜单中:“开槽”、“轴肩”、“凸缘”、“ 退刀槽”。
“基准”菜单中:“计算”。
allow_cycle_optimize yes, no在18.0以前的版本中,有一个孔加工序列参数,允许用户优化孔加工序列CL-数据的循环输出。
自版本18.0以来,该参数不再有效。
yes - 使该参数在序列中可见no - 该参数在序列中不可见allow_move_attach_in_dtl_move yes, no确定绘图模式中的“移动”和“移动附属”命令是(yes) 否(no) 一起执行allow_move_view_with_move yes, no设置为“yes”时,可以使用“绘图”模式中的“移动”命令,移动绘图视图。
UNITY_资源路径与加载外部文件
UNITY_资源路径与加载外部⽂件UNITY_资源路径与加载外部⽂件背景:有许多静态数据是放在客户端中的,⽐如csv/xml⽂件,是需要动态读取⽂件的实例: 动态读取⼀个xml⽂件,并⽣成⼀个类<?xml version="1.0" encoding="UTF-8"?><test><name>chenjd</name><blog>/murongxiaopifu/</blog><organization>Fanyoy</organization><age>25</age></test>将此xml⽂件随意放在某路径下:Assets/aa/bb/Test.xml使⽤代码读取⽂件内容void Start() {XElement result = LoadXML("Assets/aa/bb/Test.xml");}void LoadXML(string path) {XElement xml = XElement.Load(path);return xml;}读取成功。
问题1. 路径和地址。
在移动端是找不到⽂件的。
问题2. 使⽤的是PC上传统的⼀套读取资源的做法,⽽没有使⽤unity3d提供的⽅法。
可能导致找得到⽂件但是没能正确地读取⽂件内容移动平台的资源路径:Application.dataPath: 程序的数据⽂件所在⽂件夹。
在Editor中就是Assets 安卓: /data/app/xxx.xxx.xxx.apk iOS: Application/xxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/xxx.app/DataApplication.streamingAssetsPath: 流数据的缓存⽬录,为相对路径,适合设置⼀些外部数据⽂件 安卓: jar:file:///data/app/xxx.xxx.xxx.apk/!/assets iOS: Application/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/xxx.app/Data/RawApplication.persistentDataPath: 持久化数据存储⽬录的路径,可⽤于存储⼀些持久化的数据⽂件 安卓: /data/data/xxx.xxx.xxx/files iOS: Application/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/DocumentsApplication.temporaryCachePath: 临时数据的缓存⽬录 安卓: /data/data/xxx.xxx.xxx/cache iOS: Application/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/Library/CachesdataPath和streamingAssetsPath⼀般是相对程序的安装⽬录位置persistentDataPath和temporaryCachePath⼀般是与系统有关的固定位置那么,打包之后的资源的路径如何与这些地址对应上呢?Unity中的资源处理种类:Resources:如果有⽂件夹名为Resources,则⾥⾯的内容会⽆条件地在打包时打包集成到.asset⽂件中可以放置⼀些Prefab,因为Prefab在打包时会⾃动过滤掉不需要的资源,有利于减⼩资源包1. 只读。
Unity学习笔记(2)--配置文件的使用
Unity学习笔记(2)--配置⽂件的使⽤在Unity的配置中,使⽤配置⽂件也是⼀种⾮常灵活的⽅式,毕竟能够通过修改配置⽂件的⽂本就能达到改动的⽬的,⽽不需要对源码进⾏改动、重新编译。
使⽤配置⽂件对Unity进⾏配置,需要增加两个程序集的引⽤:System.Configuration和Microsoft.Practices.Unity.Configration,并且在代码中⽤相应的两个命名空间:1: using System.Configuration;2: using Microsoft.Practices.Unity.Configuration;此外,需要修改应⽤程序的配置⽂件:在configSections节点中,加⼊Unity的section配置信息1: <configSections>2: ...3: <section name="unity"4: type="Microsoft.Practices.Unity.Configuration.UnityConfigurationSection, Microsoft.Practices.Unity.Configuration, Version=1.2.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/> 5: </configSections>其中name是section的名称,type就是处理该section的程序类型,Unity提供了UnityConfigurationSection,负责处理配置⽂件信息,它包含在程序集Microsoft.Practices.Unity.Configuration中接下来,需要在configuration节点中增加Unity配置节点,格式如下:1: <unity>2: <typeAliases>3: <typeAlias alias="" type="" />4: <typeAliases />5: <containers >6: <container>7: <types>8: <type type="" mapTo="" />9: </types>10: <instances>11: <add name="" type=""value="" />12: </instances>13: </container>14: </containers>16: </unity>unity的⼦元素,包含节点⼤致如上,其宗typeAliases是type别名,能够简化下⾯types中type的配置。
Unity发布webgl,借助脚本自动处理元素替换
Unity发布WebGL后,借助脚本自动处理元素替换什么是Unity?Unity是一种目前流行跨平台的游戏开发引擎,常用来制作3D和2D游戏、虚拟现实和增强现实应用程序。
支持部署多种平台,包括Windows、Mac、iOS、Android和主流的游戏主机,其中就包括发布部署WebGL项目。
WebGL作为Unity游戏的发布的一种形式,方便实现跨平台兼容性、无需插件、强大的图形性能和Web集成性,提供更好的游戏体验,需要注意的是WebGL项目,尤其需要做好优化,否则会影响用户体验的。
替换统一的样式在Unity发布WebGL后,将其上传到服务器进行展示或者在本地配置的服务器上展示,能看到统一的加载页面,界面上的元素都是统一指定的,对于追求个性化的展示,明显是不合需求的,这个时候,就需要配合UI,制作一套个性化的元素进行手动替换。
这种替换,对于次数不多,还是可以采用手动替换的;但发布过WebGL的朋友,就知道这明显是不可能的,先不说发布后调测的的次数,就发布来说,不可能仅几个这样的项目的,通常都是成批次的,这样就带来了,手动替换会很耗费时间的,关键会导致心情和效率走向一个不愿意看到的方向,所以就有了下面的脚本。
在脚本语言的选择上是很多的,或者说可以扩大一点,能完成此类工作的工具很多的。
目前选择的是Python。
Python是什么,如果想了解的,请自行借助网络资源,可以深入的了解一下,否则有广告的嫌疑,这里就不在赘述了,请谅解。
参考脚本下面是采用Python编写的脚本,您可以在此基础上,进行修改,使其和自己的项目适配的目的。
webgl_onekey.py#!D:\Users\gjc\AppData\Local\Programs\Python\Python39-32# 处理unity webgl发布后的替换问题import osimport shutilproject_name = 'ElectricLab'def copyimg(old_name, new_name):shutil.copyfile(old_name, new_name)def delFiles(cur_path):fn = ['favicon.ico', 'progressLogo.Dark.png', 'progressLogo.Light.png'] for item in fn:path = cur_path + itemif os.path.exists(path):os.remove(path)def replaceStr(file, old_str, new_str):"""替换文件中的字符串:param file:文件名:param old_str:就字符串:param new_str:新字符串:return:"""file_data = ""with open(file, "r", encoding="utf-8") as f:for line in f:if old_str in line:line = line.replace(old_str, new_str)file_data += linewith open(file, "w", encoding="utf-8") as f:f.write(file_data)def isAlreadyReplace(file, str):with open(file, "r", encoding="utf-8") as f:for line in f:if str in line:return Truereturn Falsedef dealwithIndexHtml(title):# 处理indexindex = local_filename + '/index.html'# 去掉右下角的图标if isAlreadyReplace(index, 'unity.js'):returnold_str = r'<div class="webgl-logo"></div>'new_str = ''replaceStr(index, old_str, new_str)# 全屏old_str = r'<div class="title">' + project_name + '</div>'new_str = '<div class="title">全屏</div>'replaceStr(index, old_str, new_str)# 添加js文件old_str = r'<script src="Build/UnityLoader.js"></script>'new_str = '<script src="Build/UnityLoader.js"></script>\n<script src="StreamingAssets/js/jquery.min.js"></script>\n<scriptsrc="StreamingAssets/js/unity.js"></script>'replaceStr(index, old_str, new_str)# 修改标题old_str = r'<title>Unity WebGL Player | ' + project_name + '</title>'new_str = '<title>' + title + '</title>'replaceStr(index, old_str, new_str)# local_filename = os.path.abspath('.') #从上一级目录调用的时候,这个取到的是上级目录,目录不对,下面的调用就白费了local_filename = os.path.dirname(__file__) # 路径里面的有空格会报错的,这个要保证路径中没有空格index = local_filename + '/index.html'# if isAlreadyReplace(index, 'unity.js'):# print(local_filename + '----已处理过,exit')# exit()print(local_filename + '----处理中')filename = os.path.split(local_filename)[1]# 复制图片文件copyimg(r'E:/mydevelop/unity/work/git/gaoyadian/onekey_material/webgl_bj.jpg',local_filename + '/Build/' + filename + '.jpg')copyimg(r'E:/mydevelop/unity/work/git/gaoyadian/onekey_material/progressEmpty.Dark.pn g',local_filename + '/TemplateData/progressEmpty.Dark.png')copyimg(r'E:/mydevelop/unity/work/git/gaoyadian/onekey_material/progressEmpty.Light.pn g',local_filename + '/TemplateData/progressEmpty.Light.png')copyimg(r'E:/mydevelop/unity/work/git/gaoyadian/onekey_material/progressFull.Dark.png', local_filename + '/TemplateData/progressFull.Dark.png')copyimg(r'E:/mydevelop/unity/work/git/gaoyadian/onekey_material/progressFull.Light.png', local_filename + '/TemplateData/progressFull.Light.png')# 删除文件delFiles(local_filename + '/TemplateData/')# 处理index.htmldealwithIndexHtml(filename)脚本中已添加了相应的注释,比较好理解,不做过多的解释了,拿来用就好。
Unity3D Web服务器的架设
Unity3D教程宝典之Web服务器篇:(第一讲)服务器的架设第一部分WAMP介绍什么是WAMP,什么是LAMP?WAMP,即Windows + Apache + Mysql + PHP,一组常用来搭建动态网站或者服务器的开源软件,本身都是各自独立的程序,但是因为常被放在一起使用,拥有了越来越高的兼容度,共同组成了一个强大的Web应用程序平台。
LAMP,即Linux + Apache + MySQL + PHP。
安全性和性能比WAMP高。
建议初学者使用WAMP入门,商业开发用LAMP。
第二部分WAMP安装及使用第一步WAMP的安装下载wamp5。
安装,全部选择默认即可。
打开浏览器,输入http://localhost/ 或者http://127.0.0.1/,进入【服务器主页】。
或者鼠标移动至屏幕右下角的wamp图标如下方左图(图标白色为正常,黄色为部分服务关闭,红色为服务全部已经关闭),点击鼠标左键,如下方右图点击Localhost,【服务器主页】进入管理首页如下进入【管理页面】后,如下图的位置中,进入【权限】,修改密码或者使用MySQL控制台修改密码从Web服务器下载图片上一讲风宇冲介绍了wamp服务器及安装。
这回介绍如何从服务器下载内容至Unity3d程序中。
往wamp路径下的www文件夹下拖入一张图片,这里使用的是cat.jpg, 输入http://localhost/cat.jpg,可以查看到图片如下后,新建unity工程,创建一个球体,创建一个任意名称材质,并赋予该材质至球体。
创建一个名为GetImage的脚本,代码如下,using UnityEngine;using System.Collections;public class GetImage : MonoBehaviour {void OnGUI(){if(GUI.Button(new Rect(0,0,100,50),"Get Image")){StartCoroutine(GetWebImage());}}IEnumerator GetWebImage(){WWW myWWW = new WWW("http://localhost/cat.jpg");yield return myWWW;renderer.material.mainTexture = myWWW.texture;}}之后运行,点击左上角按钮,白球即被赋予了网页上的图片做为贴图了,怎么样,简单吧?小结:Unity3d读取http上内容的核心是myWWW =WWW(url),根据你读取的是什么类型的内容,如果是文字就是myWWW.text读取,是图片就myWWW.texture读取,是视频就myWWW.movie读取。
C#——web.config文件的配置
C#——web.config文件的配置一、认识Web.config文件Web.config文件是一个XML文本文件,它用来储存 Web 应用程序的配置信息(如最常用的设置 Web 应用程序的身份验证方式),它可以出现在应用程序的每一个目录中。
当你通过新建一个Web应用程序后,默认情况下会在根目录自动创建一个默认的Web.config文件,包括默认的配置设置,所有的子目录都继承它的配置设置。
如果你想修改子目录的配置设置,你可以在该子目录下新建一个Web.config文件。
它可以提供除从父目录继承的配置信息以外的配置信息,也可以重写或修改父目录中定义的设置。
在运行时对Web.config文件的修改不需要重启服务就可以生效(注:<processModel>节例外)。
当然Web.config文件是可以扩展的。
你可以自定义新配置参数并编写配置节处理程序以对它们进行处理。
二、web.config配置文件(默认的配置设置)以下所有的代码都应该位于<configuration><system.web>和</system.web></configuration>之间,出于学习的目的下面的示例都省略了这段XML标记1、<authentication>节作用:配置 身份验证支持(为Windows、Forms、PassPort、None四种)。
该元素只能在计算机、站点或应用程序级别声明。
<authentication>元素必需与<authorization>节配合使用。
示例:以下示例为基于窗体(Forms)的身份验证配置站点,当没有登陆的用户访问需要身份验证的网页,网页自动跳转到登陆网页。
<authentication mode="Forms" ><forms loginUrl="logon.aspx" name=".FormsAuthCookie"/></authentication>其中元素loginUrl表示登陆网页的名称,name表示Cookie名称2、<authorization>节作用:控制对URL 资源的客户端访问(如允许匿名用户访问)。
如何让Unity打包的WebGL与Js进行通信
如何让Unity打包的WebGL与Js进⾏通信使⽤Unity发布WebGL项⽬免不了要与Js进⾏通信,所以整理下相关知识。
⼀ Unity调⽤Js⽅法1.弃⽤的⽅法(1)在发布的WebGL项⽬的index.html添加Exit函数:function Exit() { alert("UnityToWeb") }(2)如果想在Unity中调⽤⽅法,添加代码:Application.ExternalCall("Exit");//调⽤Js的Exit⽅法2.新⽅法(1) 新建⽂件夹Plugins(2) ⽂件夹新建.jslib⽂件,这⾥创建__Internal.jslib⽂件添加代码mergeInto(LibraryManager.library, {Hello: function (obj) {window.alert("Hello, world!");Exit();//调⽤Js⽅法},});(3)c#⽂件using System.Collections;using System.Collections.Generic;using System.Runtime.InteropServices;using UnityEngine;public class UnityToWeb : MonoBehaviour{[DllImport("__Internal")]private static extern void Hello();public void CallJs(){// Unity call webHello();}}(5)在发布的WebGL项⽬的index.html添加Exit函数:function Exit() { alert("UnityToWeb") }⼆ Js调⽤Unity⽅法1.在场景中新建⼀个Cube,然后在新建脚本WebToUnity,挂载到Cube⾝上using System.Collections;using System.Collections.Generic;using UnityEngine;using UnityEngine.UI;public class WebWithUnity : MonoBehaviour{public Text text;// Start is called before the first frame updatevoid Start(){text.text = "Cobe当前位置:\nx:" + transform.position.x + " y:"+transform.position.y + " z:"+transform.position.z;}public void JsToUnity(string str){transform.position = new Vector3(transform.position.x + 1,transform.position.y);text.text = "Cobe当前位置:\nx:" + transform.position.x + " y:" + transform.position.y + " z:" + transform.position.z;}}做⼀个这样的UI给Text赋值,给按钮添加上点击事件触发CallJs()2.这⾥,我们要在Js中调⽤JsToUnity这个函数,将项⽬打包后,修改index.html⽂件。
.net winform 中使用di注册 dbcontext
.net winform 中使用di注册dbcontext在.NET WinForms应用程序中使用依赖注入(DI)来注册和解析DbContext通常涉及到使用一个依赖注入容器(如Microsoft.Extensions.DependencyInjection或者Unity)以及一些配置来设置DbContext的生命周期管理。
以下是一个使用Microsoft.Extensions.DependencyInjection的示例,展示如何在WinForms应用程序中注册和解析DbContext。
首先,确保你的项目已经安装了Entity Framework Core 和Microsoft.Extensions.DependencyInjection包。
你可以通过NuGet包管理器来安装这些包。
shell复制代码:Install-PackageMicrosoft.Extensions.DependencyInjectionInstall-Package Microsoft.EntityFrameworkCoreInstall-Package Microsoft.EntityFrameworkCore.SqlServer 接下来,在你的WinForms应用程序启动时(通常在主窗体的构造函数或者Form_Load事件中),你需要创建一个ServiceProvider实例,并注册你的DbContext。
csharp复制代码:using Microsoft.Extensions.DependencyInjection;using Microsoft.EntityFrameworkCore;using YourNamespace.Data; // 假设这是你的DbContext 所在的命名空间public partial class MainForm : Form{private readonly YourDbContext _dbContext;public MainForm(){InitializeComponent();// 创建ServiceCollection并添加DbContext服务var serviceCollection = new ServiceCollection();serviceCollection.AddDbContext<YourDbContext>(option s =>eSqlServer(Configuration["ConnectionStrings: DefaultConnection"])); // 使用你的连接字符串配置var serviceProvider = serviceCollection.BuildServiceProvider();// 解析DbContext实例_dbContext =serviceProvider.GetRequiredService<YourDbContext>();}}在上面的代码中,我们创建了一个ServiceCollection实例,并使用AddDbContext扩展方法来注册YourDbContext。
IOC:Unity配置和使用
IOC:Unity配置和使⽤原⽂出⾃:之前Terry Lee 已经介绍过Unity的简单使⽤了,不过那篇⽂章是针对旧版本的,现在的版本1.2版略有不同。
我下载了Unity并做了⼀个简单的测试,项⽬的分布是这个样⼦:LoggerTest.Interface.ILogger 主要是接⼝,⼀个简单的不能再简单的⽅法结构:public interface ILogger{void Write(string message);}LoggerTest 是实现这个接⼝的project,恩,跟Terry Lee 的例⼦⼀样,实现两个就OK了,分别是FlatFileLogger和DatabaseLogger。
namespace LoggerTest{public class FlatFileLogger : ILogger{public void Write(string message){Console.WriteLine(String.Format("Message:{0}", message));Console.WriteLine("Target:FlatFile");}}public class DatabaseLogger : ILogger{public void Write(string message){Console.WriteLine(String.Format("Message:{0}", message));Console.WriteLine("Target:Database");}}}下⾯是Unity出场的时候了,可能初学者不知道要引⽤哪些组件(像我就是),这⾥截个图告诉⼤家:如果是显⽰注⼊,调⽤Microsoft.Practices.Unity 和Microsoft.Practices.ObjectBuilder2 就可以了;如果是通过配置⽂件注⼊,那么就要另外引⽤Microsoft.Practices.Unity.Configuration好了,那么基本上就⼤功告成,代码⾥已经注释的很清楚了//显式获取UnityContainerprivate IUnityContainer GetContainer_Directly(){IUnityContainer container = new UnityContainer();//如果注册多个类型需要指定名字(名字是任意的)//否则当调⽤ResolveAll<>()时,那些没有指定名字的将会获取不到//但是,Resolve<>() 会默认取那些空名字的注⼊对象。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Unity中Web.Config文件的配置与调用在上一篇文章“Unit简单依赖注入”我们可以实现构造对象和被依赖对象之间的松耦合,使我们的抽象层(Player)能够保持稳定,但是在并没有把客户类和Player类之间彻底解耦,即当我们不想使用MP3Player注入,而想使用CDPlayer 注入时,我们需要修改客户类的容器注册。
下面我们使用web.config配置文件来解决这个问题。
Unity 应用程序块可以从XML 配置文件中读取配置信息。
配置文件可以是Windows Forms 应用程序的App.config 或者 应用程序的Web.config。
当然,也可以从任何其他XML 格式的文件或者其他数据源中加载配置信息。
在本文中,将研究Unity 配置文件的格式、配置的读取、通过示例说明实例的获取。
1. Unity 配置文件的完整格式<?xml version="1.0" encoding="utf-8" ?><configuration><configSections><section name="unity"type="Microsoft.Practices.Unity.Configuration.UnityConfig urationSection,Microsoft.Practices.Unity.Configuration,Version=1.0.0.0,Culture=neutral,PublicKeyToken=31bf3856ad364e35" /></configSections><unity><typeAliases><typeAlias alias="singleton"type="Microsoft.Practices.Unity.ContainerControlledLifetim eManager,Microsoft.Practices.Unity" /><typeAlias alias="external"type="Microsoft.Practices.Unity.ExternallyControlledLifeti meManager, Microsoft.Practices.Unity" /><typeAlias alias="IMyInterface"type="MyApplication.MyTypes.MyInterface, MyApplication.MyTypes" /><typeAlias alias="MyRealObject"type="MyApplication.MyTypes.MyRealObject, MyApplication.MyTypes" /><typeAlias alias="IMyService"type="MyApplication.MyTypes.MyService, MyApplication.MyTypes" /><typeAlias alias="MyDataService"type="MyApplication.MyTypes.MyDataService,MyApplication.MyTypes" /><typeAlias alias="MyCustomLifetime"type="MyApplication.MyLifetimeManager, MyApplication.MyTypes" /></typeAliases><containers><container name="containerOne"><types><type type="Custom.MyBaseClass" mapTo="Custom.MyConcreteClass" /><type type="IMyInterface"mapTo="MyRealObject" name="MyMapping" /><type type="Custom.MyBaseClass" mapTo="Custom.MyConcreteClass"><lifetime type="singleton" /></type><type type="IMyInterface"mapTo="MyRealObject" name="RealObject"><lifetime type="external" /></type><type type="Custom.MyBaseClass" mapTo="Custom.MyConcreteClass"><lifetime value="sessionKey"type="MyApplication.MyTypes.MyLifetimeManager,MyApp lication.MyTypes" /></type><type type="IMyInterface"mapTo="MyRealObject" name="CustomSession"><lifetime type="MyCustomLifetime"value="ReverseKey"typeConverter="MyApplication.MyTypes.MyTypeConverte r,MyApplication.MyTypes" /></type><type type="IMyService"mapTo="MyDataService" name="DataService"><typeConfigextensionType="Microsoft.Practices.Unity.Configuration.T ypeInjectionElement,Microsoft.Practices.Unity.Configuration"><constructor><param name="connectionString" parameterType="string"><value value="AdventureWorks"/></param><param name="logger" parameterType="ILogger"><dependency /></param> (车延禄)</constructor><property name="Logger" propertyType="ILogger" /><method name="Initialize"><param name="connectionString" parameterType="string"><value value="contoso"/></param><param name="dataService" parameterType="IMyService"><dependency /></param></method></typeConfig></type></types><instances><add name="MyInstance1"type="System.String" value="Some value" /><add name="MyInstance2"type="System.DateTime" value="2008-02-05T17:50:00" /></instances><extensions><add type="MyApp.MyExtensions.SpecialOne" /></extensions><extensionConfig><add name="MyExtensionConfigHandler"type="MyApp.MyExtensions.SpecialOne.ConfigHandler" /></extensionConfig></container></containers></unity></configuration>结构图示:看到上面的内容好多人会感到怎么这么复杂啊?实际上,上面的内容是一个完整的结构,以供参考,在日常开发中一般不会全用到的,这里用的最多的元素标记是:<containers>中的<container>内部的<type>标记。