unity

unity 代码C#封装为dll

匿名 (未验证) 提交于 2019-12-02 22:10:10
2并选择类库类型 3编写简单的代码看看效果(发现会报错),主要是没有添加类库,以及using UnityEngine;引用空间 4添加类库,引用空间 发现依然会报错,这就需要添加应用库unityengine.dll,方法如下 找到安装unity目录下的UnityEngine.dll,添加后你就会发现,报红的地方消失 5右键解决方案,生成解决方案 在此之前你需要选择运行的.framwork版本,需要和unity的使用版本要求一致,我的是在.framwork3.5之下 6.这时候你可以在项目中找到dll文件,加入到unity 在代码中调用dll 需要using 命名空间 这是我做的链接:https://pan.baidu.com/s/1i3LBHrkQOg7eCh9Sf-EQVw 密码:aqvp 有什么好的方法,大神多多留言 文章来源: unity 代码C#封装为dll

使用Unity容器实现属性注入

匿名 (未验证) 提交于 2019-12-02 22:06:11
Unity :是微软用C#实现的轻量级,可扩展的依赖注入容器。 控制反转 :(Inversion of Control,缩写为IoC),是用来消减程序之间的耦合问题,把程序中上层对下层依赖,转移到一个第三方容器中来装配。 依赖注入 :(Dependency Injection,缩写为DI):我们向容器发出请求以后,获得这个对象实例的过程就叫依赖注入。 使用NuGet程序包添加引用: 输入Unity.Configuration搜索并下载会自动添加所需的包(Unity.Container,System.Runtime.CompilerServices.Unsafe,Unity.Abstractions) 配置文件如下: <? xml version = "1.0" encoding = "utf-8" ?> <configuration> <configSections> <!--定义配置节处理程序与配置元素之间的关联。--> <section name = "unity" type = "Microsoft.Practices.Unity.Configuration.UnityConfigurationSection,Unity.Configuration" /> </configSections> <unity> <containers> <container> <!-

在Unity中创建VR游戏

匿名 (未验证) 提交于 2019-12-02 22:06:11
添加VR插件 为了为您选择的平台创建VR游戏,我们需要下载几个插件。出于本教程的目的,我将向您展示如何上传到Android平台。要上传到iOS,您需要下载 Xcode。 现在让我们下载Unity的Google VR SDK插件。在本教程中,它是在1.110版本上。你可以在GitHub上找到它 。将所有文件解压缩并解压缩到新文件夹中。这有助于您整理文件。 此外,如果您还没有它,则可能需要Java SE Development Kit。按照Oracle网站上的说明进行操作。 注意:您可能还需要下载 Android SDK。 让我们创建一个项目 打开Unity来创建一个新项目。它会询问您是否要下载资产。我们下载环境包。 项目打开后,转到资产 > 导入包 > 自定义包 > 导入 用于Unity的Google VR S DK > 导入。 我们需要为VR平台准备我们的项目。我们需要告诉Unity我们正在为Android构建并启用场景VR。首先,转到File> Build 并选择Android。这也是选择La ndscape Left的好时机。然后单击底部的Switch Platform 并关闭窗口。 是时候启用VR设置了。如果您在执行上述操作之前尝试玩游戏,则会收到错误消息。转到“ 编辑”>“项目设置”>“播放器”,然后在“ XR设置”下的右侧,单击“ 虚拟现实支持”。 别忘了选择SDK

[unity]GPU Instanceѧϰ

匿名 (未验证) 提交于 2019-12-02 22:06:11
前言 我们之前研究过为什么Unity的UI可以合批,是因为使用了相同的材质进行渲染,UI上不同图片渲染是通过把图片打成一张图集后,使用Image组件对顶点填充了不同的UV值实现的。 那么有没有什么办法可以让3D的物体也像UI一样,使用相同材质,但是可以表现出不一样的样子呢(比如颜色/位置等)? 我们知道unity有两种传统的批处理的方式:静态批处理,动态批处理。其中动态批处理可以实现让物体使用相同的材质,拥有不同的位置信息。但是动态批处理的局限性很高(顶点数限制,PASS数限制等)。 Unity在5.4及以后的版本支持了一种新的批处理方式:GPU Instancing。通过这种方式,我们可以给同一材质传递一些不同的信息,进而渲染出不同的效果。 GPU Instancing官方文档 1.使用Unity的Standard材质 首先,为了避免动态批处理影响我们观察GPU Instance的结果,我们要先把动态批处理关掉(在Build Setting中的Player Setting中): 关闭动态批处理 然后我们在unity中新建一个材质球,把面板上的GPU Instancing选项勾上,新建几个cube得到的结果是这样的: 16个cube的GPUInstancing WTF?16个cube居然有67个Batches?这哪里优化了,分明是负优化好吧。。。 这里我们读一下文档

Unity的UI究竟为什么可以合批

匿名 (未验证) 提交于 2019-12-02 22:06:11
1.UI/Default代码研究 首先,我想到的是,既然是对图集纹理进行采样,而且又不能统一更改材质的纹理UV值,我们通常写的shader都是直接根据模型UV值对主纹理进行采样,那会不会是shader中对MainTexture进行了什么神奇的处理,让图片采样只根据指定的UV值进行采样呢? 我去官网下载了shader代码,找到了UI/Default的具体实现: fixed4 _Color; fixed4 _TextureSampleAdd; float4 _ClipRect; v2f vert(appdata_t v) { v2f OUT; UNITY_SETUP_INSTANCE_ID(v); UNITY_INITIALIZE_VERTEX_OUTPUT_STEREO(OUT); OUT.worldPosition = v.vertex; OUT.vertex = UnityObjectToClipPos(OUT.worldPosition); OUT.texcoord = v.texcoord; OUT.color = v.color * _Color; return OUT; } sampler2D _MainTex; fixed4 frag(v2f IN) : SV_Target { half4 color = (tex2D(_MainTex, IN.texcoord) +

Unity制作即时战略游戏毕设

匿名 (未验证) 提交于 2019-12-02 22:06:11
创建项目 双击Unity,选择New Project: 我们将它命名为rts,悬着其他本地磁盘例如C:,选择3D然后点击Create Project: 然后我们通过File->Save Scene,保存当前的场景为“scene”(不需要“”) 摄像机 Unity会自动添加相机到工程中。如下图所示,我们在Hierarchy中选择摄像机,在Inspector分别修改Position和Rotation的值,让摄像机看向地面。 注意:我们还看不到任何东西,因为我们的场景还是空的。 灯光 Unity已经在我们创建场景的时候自动添加了Directional Light。让我们在Hierarchy直接选中它。然后分别如下图所示调整角度和灯光的设置: 注意:我们可以根据我们自己的需要设置这些属性,但上面这种设置在我们后面的游戏里看起来好些。 开始装满这个世界 现在所有的事情都准备就绪了,我们可以在场景里添加多种多样很酷的东西了。 地面 地面是一个简单的Unity Plane。我们可以通过在顶部菜单中选择GameObject->3DObject->Plane来创建它。我们将其命名为Ground并且在Inspector中调整它的缩放比例。 注意:取一个恰当的名字“Ground”是很重要的。 让我们给地面添加些颜色。首先我们可以通过我们选择的工具(例如Paint.NET)创建一个简单40x40的材质。

unity 简单通用游戏模式设计

匿名 (未验证) 提交于 2019-12-02 22:06:11
好吧好吧,又谈到这个问题了,其实早就想写这个博客了,犹豫了好久。在设计游戏的时候我本人是很排斥什么游戏架构设计,mvc什么的,我只想马上动手就把自己的游戏玩法最快的用代码敲出来,还不会出无法挽回的错误,那么下面的步骤可以帮助你构建一个简单的游戏模式架构。 一。 首先是数据存储类,如GameManager,UIManager,SoundManager等这些类,这些类是不销毁的,由于这些类为物体组件,用普通的单例模式容易出现实例化的冲突,因此可以首先加载一个数据场景,间隔一段时间后加载第二个正式场景,以后最多的返回也只能返回到第二场景,这样就解决了冲突问题 二。 分场景控制类,每个场景中有可能要进行不同的复杂的控制,比如播放个动画,选择角色什么的。比如UI场景,该场景中主要以UI功能为主,设置音量,选择角色什么的,都在该场景中进行,因此可以用个UIScene类的做一些特殊的控制;正式游戏场景,比如在UI场景选择好了敌人,那么现在进入正式打击敌人,冒险什么的,可以建立一个PlayScene场景,该场景用来控制播放个动画次序什么的各种操作。 三。 通用类的作用,比如UI控制中物体的隐藏与出现,跳转到另一个场景的操作,销毁物体的操作这些可以用一个GeneralController的集成这些函数,然后作为组件的形式添加到需要的分场景的场景控制的物体上,这一点尤其对UGUI的添加事件很有效。 四

假如你不小心干掉了系统,你该怎么办?(一次手贱的记录 ~ Ubuntu and Python3.6)

匿名 (未验证) 提交于 2019-12-02 21:53:52
多年未犯低级错误,今天犯了个不大不小的错误,记录下生活点滴吧 今天早上脑海里想了下,如果电脑挂了我要备份哪些东西?然后中午休息的时候就列了一下,没想到晚上就悲剧了... 这个是中午写的: ## If I to bak **`浏览器书签备份`** ~/桌面(**先push到github**) ~/下载(Linux软件备份) ~/图片(重要目录:jpg、Skill) ~/文档(PDF) 自己电脑之前一直用的 Python2.7 和 Python3.6 版本,现在全部更新到 Python3.7 了,正好今天晚上有空就随手一打命令来卸载原来版本 sudo apt-get autoremove python3.6 ,然后习惯性的输入了 yes ,1s的停顿,看到谷歌浏览器消失了,这时候才发现~呵呵哒了。再按 Ctrl+C 来停止已经没用了...... (((φ(◎ロ◎;)φ))) 出于职业习惯,便把依赖项备份了一下:(附录部分) 然后赶紧乘着没关机前,执行备份相关的工作啊~大体步骤: 再开个PC,SSH远程登录一下(万一锁屏Ubuntu肯定进不去了) 重新安装一下谷歌浏览器,把个书签导出下( dpkg -i xxxx ) 然后就是连接下FTP把该备份的进行备份一下(昨天晚上还想要不要弄个文件同步服务器,看来是要得) 修复一下系统依赖 接着就重新安装相关软件 备份目录:

Unity 调用java代码 以及java回调

匿名 (未验证) 提交于 2019-12-02 21:52:03
基本都是固定的代码 AndoridInterface这个类主要就是java回调使用,必须继承AndroidJavaProxy,这是Unity写好的。构造函数中传入java代码 中对应的类名。这个类的函数和AndoridInterface的函数要一致,Unity会通过类名来回调。如果java要传参,函数的参数也要一致,java类用AndroidJavaObject代替。 public class AndoridInterface : AndroidJavaProxy { } 这是java对应的回调接口,如果要在java中回调,就直接调用这个接口的函数就可以 public interface CallUnity { } 这是java的Init函数 @Override 整个代码因为自己封装了一下,所以感觉不太明了。 返回类型byte[]的时候,我这里总是有问题,我看文档说是支持,但是我测试有问题。所以数组我全部用一个java类,类里面用一个集合来保存。Unity得到AndroidJavaObject,可以通过CallStatic遍历这个类的集合,然后取出数据。 整体来说调用挺简单,也挺方便的。 来源:51CTO 作者: 笔端的年华 链接:https://blog.csdn.net/BDDNH/article/details/100583822

unity 常用的几种解析json方式

对着背影说爱祢 提交于 2019-12-02 21:22:51
转载自: https://blog.csdn.net/tianyongheng/article/details/78989612 目前接触的unity 解析json 有几种: 1.比较流行的listjson(数据对象必须和json一对一) 2.目前unity自带 JsonUtility(不能解析复杂的json) 3.Newtonsoft.Json (推荐可以解析复杂的json,不需要和json字段一对一 ,灵活) (下载地址:https://github.com/SaladLab/Json.Net.Unity3D/releases) listjson 对json 解析提供多样化,可以解析成JsonData,也可以通过JsonMapper 转成自定义的mode数据对象。 listJson功能比较丰富,但是在通过JsonMapper转成自定的对象时,自定义对象的字段要和解析的json字段一对一(json里面的字段,自定义的对象一定要有),不然会解析失败。 例如: jison: 1 string json = @" 2 { 3 ""d"":""d"", 4 ""album"" : { 5 ""cc"":""cc"", 6 ""name"" : ""The Dark Side of the Moon"", 7 ""artist"" : ""Pink Floyd"", 8 ""year""