unity

Unity中在非运行状态中播放AudioClip

萝らか妹 提交于 2019-12-11 16:59:04
这里用到反射,会用到AudioUtil,源码调用如下: https://github.com/jamesjlinden/unity-decompiled/blob/master/UnityEditor/UnityEditor/AudioUtil.cs 思路如下: http://baba-s.hatenablog.com/entry/2017/12/04/173920 这里放一下拓展类: 1 #if UNITY_EDITOR 2 using System; 3 using UnityEditor; 4 #endif 5 using System.Reflection; 6 using UnityEngine; 7 8 //生成配置文件 9 [CreateAssetMenu(fileName = "AudioClipPlayWithOutRunning", menuName = "AudioClipPlayWithOutRunning", order = 0)] 10 [Serializable] 11 public class AudioClipPlayWithOutRunning : ScriptableObject 12 { 13 //存储数据 14 [SerializeField] private AudioClip soundData; 15 16 //自动绑定脚本 17

unity 拿到管线权限的解决方案

此生再无相见时 提交于 2019-12-11 15:46:53
自己建个cmd 传给postprocess layer camera event可以加在这个cmd上控制位置 base pass post process ui都共享这段cmd 在一开始记下backbuffer hdr 不能在这个camera上关 这样unity内部关于hdr的开关就被关掉了 为camera建立一个代理 原本的main camera ui camer 的hdr关掉 代理 camera 开hdr用它画basepass mrt用 cmd.setbuffers rt ref 其实本质上就是加了个camera 画hdr画完换会原来的camera ///////////// 或者直接升级srp 尤其考虑到vulkan的subpass的封装 来源: https://www.cnblogs.com/minggoddess/p/10896754.html

Unity 地形设计之分形布朗运动(五)

不问归期 提交于 2019-12-11 14:20:32
分形布朗运动FBM(Fractal Brown Motion)是1968年Mandelbrot和Ness两人提出的一种数学模型,它是一种随机运动,粒子的运动方向随时改变,其运动轨迹是一条无规则的折线,不受什么约束和支配。它主要用于描述自然界的山脉、云层、地形地貌以及模拟星球表面等不规则形状阶。 分型布朗运动的原理: https://thebookofshaders.com/13/?lan=ch 从音乐理论上说,每个音符都和一个特定的频率相关联。这些音符和频率的关系遵从一定的模式,也就是我们所说的音阶,一个八度(octave)对应着频率上的加倍或减半。 通过在循环( 循环次数为 octaves ,一次循环为一个八度 )中叠加噪声,并以一定的倍数( lacunarity ,间隙度)连续升高频率,同时以一定的比例( gain ,增益)降低 噪声 的振幅,最终的结果会有更好的细节。这项技术叫“分形布朗运动(fractal Brownian Motion)”( fBM ),或者“分形噪声(fractal noise)” 这一篇我们将自己创建一个布朗运动,通过分型布朗运动改进噪音算法,下面我们创建一个静态的工具类。 using System.Collections; using System.Collections.Generic; using UnityEngine; public

AndroidStudio导出aar文件给Unity使用

左心房为你撑大大i 提交于 2019-12-11 14:15:50
AndroidStudio导出aar文件给Unity使用 本文参考 : http://www.devacg.com/?post=548 Demo地址: https://github.com/JulyNine/AndroidToUnity 一、用Android Studio创建个空工程 注意:包名要与Unity中工程的包名不一致,不然打包时会报错multi dex 二、把classes.jar拷到libs下 C:\Soft\UnityHub\2019.2.0f1\Editor\Data\PlaybackEngines\AndroidPlayer\Variations\mono\Release\Classes\classes.jar(自己Unity安装路径) 拷到 C:\Users\July\AndroidStudioProjects\Fakemiss\app\libs\classes.jar(新建的android工程路径) 注意:以上是我的安装目录和工程目录。 三、把classes.jar添加进Dependencies 四、删除res下多余的资源(重要,不然打包的时候会报错:link resource error) 删除layout文件夹 以及values文件夹下的style.xml 五、修改build.gradle文件才能生成aar 修改后的文件 //apply plugin:

FSM有限状态机 ---C#、Unity

自闭症网瘾萝莉.ら 提交于 2019-12-11 13:43:44
抽象类State public interface State//定义状态接口 { void Init();//初始化 int GetCurrentStateId();//返回当前状态Id void ComeEvent(State state);//进入状态 void LeaveEvent(State state);//离开状态 } 抽象类StateMachine public interface StateMachine<T>//定义状态机接口 { T GetCurrentState();//返回当前状态 T GetPreviousState();//返回上个状态 void Register(T t);//注册状态 void RemoveState(T t);//移除状态 void SwitchState(T t);//切换状态 } 状态机GameStateMachine public class GameStateMachine:StateMachine<State>//状态机 { public State CurrentState = null; //当前状态 public State PrevisousState = null;//上一个状态 public Dictionary<int, State> StateDt;//状态存储 public

lua笔记1—配置lua环境

依然范特西╮ 提交于 2019-12-11 10:18:40
①.首先进入官网下载xLua ②.将assets文件夹下所有东西全部拷贝到自己文件夹下 打开项目可以看到菜单栏多了一个xLua ③.打开宏 File - Build Settings -Player Settings - other Settings - Scriptsing Define Symbols输入HOTFIX_ENABLE 再观察XLua就会发现多了一个选项: ④.补坑 运行08_Hotfix场景 这是因为在开发环境,没有打包,所以应该先执行两个步骤 生成Generate库,只要项目中有脚本等的更改都需要重新生成 将新生成的代码注入到编辑器里面 执行第二步时时有可能发现报下图的错误: 将官方案例中Tools文件夹拷贝到同级目录下(注意,是与assets同级目录下) 直至完成为止: ⑤.解决warning 有可能会遇到这个问题: 解决办法: 找到Unity安装目录\Editor\Data\Managed -- 将Unity.Cecil.dll、Unity.Cecil.Mdb.dll、Unity.Cecil.Pdb.dll三个dll拷贝到 项目\Assets\XLua\Src\Editor下 如果重新执行上面两步骤还报这个错误,检查项目有没有中文路径 ⑥.成功运行 至此环境配置成功 来源: CSDN 作者: QQ317392507 链接: https://blog.csdn

在 Unity 中使用 Typescript 脚本

社会主义新天地 提交于 2019-12-11 09:54:31
本文介绍的插件 duktape-unity 可以使你在 Unity3D 中使用 javascript/typescript 来写脚本. 这里说的脚本是指可以在包括iOS上动态执行的脚本. 目前主流的选择是 lua 和 ILRuntime(C#), 都是很成熟的方案. typescript 或许可以是介于两者之间的一种选择, 即有动态脚本语言的特性, 又有强类型的辅助. 概况 duktape-unity 的使用方法与 slua/ulua 等是类似的, 通过生成绑定代码并对部分值类型进行特定优化来提高交互效率. 并针对 js 的使用习惯, 做了一些 js 风格的封装, 例如事件/委托的封装, 有两种方式在 js 中将 js 函数注册到 C# 事件/委托上 (这里均以 ts 为例): // 方法一, 直接注册 js 函数 UnityEngine.Application.lowMemory.on(() => { console.log("low memory"); }); // 方法二, 构造一个 Delegate 对象进行注册, 这种方式 Delegate 对象本身就是一个 Dispatcher, 可以自己再 on/off 多个响应者 let delegate = new DuktapeJS.Delegate0(); delegate.on(this, () => { console

Unity Shader 屏幕后处理灰度

主宰稳场 提交于 2019-12-11 03:30:43
原理: 移除场景中除了黑白灰以外所有的颜色,让整个图像灰度化(Grayscale)。很简单的实现方式是,取所有的颜色分量,将它们平均化,但是但人眼会对绿色更加敏感一些,而对蓝色不那么敏感,所以为了获取物理上更精确的效果,我们需要使用加权的(Weighted)通道: 脚本如下: public Shader shader ; //相应的shader private Material mat = null ; //相应的材料 public Material material { get { mat = CheckShaderAndCreateMaterial ( shader , mat ) ; return mat ; } } void OnRenderImage ( RenderTexture src , RenderTexture dest ) { if ( material != null ) { Graphics . Blit ( src , dest , material ) ; } else { Graphics . Blit ( src , dest ) ; } } Shader实现如下: Properties { _MainTex ( "Base (RGB)" , 2 D ) = "white" { } //渲染纹理 } SubShader { Pass { ZTest

Unity接入AbMob采坑记

微笑、不失礼 提交于 2019-12-11 02:08:09
之前是配置好的环境,不知道怎么突然就不正常了. 一直弹出下面的报错: Error running CocoaPods. Please ensure you have at least version 1.0.0. You can install CocoaPods with the Ruby gem package manager: sudo gem install -n /usr/local/bin cocoapods pod setup 在终端中输入上面的两条命令也安装成功了,但是在打包的时候还是弹出错误. 尝试了百度和谷歌上的各种方法安装了各种ruby版本还是不行. 各种尝试无果后都有点砸电脑的冲动了. 然后突然发现Unity里调用的好像不是我安装的Ruby版本. 系统本身带了一个Ruby版本,我用rvm安装了一个,我的$PATH配置用的是rvm里面的Ruby,而Unity调用的是系统的Ruby. 想起来我前几天升级过一次系统,估计是那次升级把我环境弄乱了. 知道问题就好办了,调用系统版本下面的gem来安装cocoapods就可以了 我的系统下ruby路径是 /System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/bin/gem 输入 cd /System/Library/Frameworks/Ruby

学习Unity 2019 ECS 框架(一)

旧巷老猫 提交于 2019-12-11 00:15:14
HelloCube ForEach ForEach是一个合体的Cubes共同旋转的简单场景。 RotatingCube挂载了RotationSpeed Convert to Entity,将该GameObject转换为Entity,该物体的GameEngine Component是Transform,作为一个旋转单位,保存为实体貌似也是正确的,ECS中C作为数据集合,作为rotation component我认为也是可以的( 更正:RotationSpeedAuthoring没有处理旋转,只是单纯记了个数据,因此它不是Component )。 public class RotationSpeedSystem_ForEach : ComponentSystem 对应ECS中的Systsem,也是Component,Unity ECS竟然可以一个脚本同时作为System和Component,此处处理的RotationCube的旋转,是个Component,同时这个场景中只有单个旋转需要处理,同时作为System专门处理物体旋转也行。 RotationSpeedAuthoring_ForEach继承了MonoBehaviour,因此需要在场景内的GameObject上挂载,接着它又实现了IConvertGameObjectToEntity接口,里面只有一个接口方法void Convert