unreal 使用 插件_unreal4 插件路径依赖引擎插件 - CSDN
  • 这个是UE4附带的插件,很好用,符合UE4的build风格的插件,里面配动图 http://note.youdao.com/noteshare?id=8234498b46813e7a72aca3a8470c71d0&sub=wcp1532137990705857 下面附赠UE4官方整理好的命令行...

    这个是UE4附带的插件,很好用,符合UE4的build风格的插件,里面配动图

    http://note.youdao.com/noteshare?id=8234498b46813e7a72aca3a8470c71d0&sub=wcp1532137990705857

    下面附赠UE4官方整理好的命令行参数,因为这个参数行4.9以后都么有更新(不论中英文,所以我就直接拿过来了)

    http://note.youdao.com/noteshare?id=e2afbd866c96c34e836a17c54a8bb635&sub=wcp1532140834650611

    展开全文
  • 版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。 ...

              对于程序员来讲,在使用UE4时候避免不了调试C++代码,那么就必然有调试代码的时候,假如你为了一个问题,反复的编译C++,反复重新打开UE4 Editor,或者你用Editor里面的Compile来编译,但是错误提示一些的都在UE4 Editor里面,没有我们平时在VS编译和调试工程时候直接查看编译信息的方便。但是我们如果只用VS默认编译的话,又做不到热更新,因为UE4必须要经过它自带的工具UBT的编译才能直接更新到项目中。但是UE4给我们提供了一个VS的插件,让我们方便的在VS里面调用UBT编译来替代VS默认编译。而且UnrealVS插件不仅有直接热更的好处,还能提高UE4项目的编译速度,一般来讲要提高2-3倍左右。

             其实不管你用的源码还是直接下载的编译好的应用,在Engine\Extras\UnrealVS\目录下边都有VS三个版本的目录,打开对应的VS版本目录,有一个UnrealVS.vsix的文件,双击运行,安装。

             然后打开你的VS,在视图-->工具栏 中勾选上UnrealVS。

             然后为了方便使用,我们再调一下UnrealVS插件上边的按钮,点击插件最右边的设置按钮,在添加或者移除按钮中选择自定义

            然后选择命令标签,工具栏选中UnrealVS,点击下边的添加命令,在弹出窗口中选择Build Startup Project命令,点击确定,然后你就会发现前边多了一个Build Startup Project的按钮。

             之后再编译工程时候,就可以在UnrealVS插件中选择好工程后,点击Build Startup Project按钮来编译了,编好的工程直接会热更新到你打开的工程中,如果出现问题时候,也可以方便查询编译信息,基本可以取代VS自带的编译。

         

    展开全文
  • 虚幻引擎C#插件现在已经开源,开发者可以使用C#语言来开发项目了。 源码地址:https://github.com/xiongfang/UnrealCS 文档地址:https://github.com/xiongfang/UnrealCS/wiki 示例项目地址:...

    虚幻引擎C#插件现在已经开源,开发者可以使用C#语言来开发项目了。

    源码地址:https://github.com/xiongfang/UnrealCS

    文档地址:https://github.com/xiongfang/UnrealCS/wiki


    示例项目地址:https://github.com/xiongfang/UnrealCS/wiki/Demonstration-project


    这个示例是基于ThirdPerson 蓝图工程创建的,只做了一点点修改。

    包含地图:

    • Engine.umap (Persistent Level)
    • UI.umap (sublevel1)
    • ThirdPersonExampleMap.umap (sublevel2)

    包含组件(用C#写的)

    • Engine
    • MainUI
    • MyCharacter
    • MyPlayerController
    • LightFade

    流程: 1.Engine.umap 包含Engine Actor,这个Actor包含Engine组件。Engine组件的生命周期存在于整个游戏的生命周期。 启动游戏后,在Engine.BeginPlay函数中,加载UI地图

            /// <summary>
            /// called on begin play
            /// </summary>
            void BeginPlay()
            {
                LogInfo("BeginPlay");
    
                //Open UI Level
                LogInfo("Open UI Level");
                FLatentActionInfo Info = new FLatentActionInfo();
                UGameplayStatics.LoadStreamLevel(this, "UI",true,false, Info);
            }

    2.UI.umap 包含UI Actor,这个Actor包含MainUI组件。这个组件处理UI事件。

        /// <summary>
        /// Main Scene UI
        /// </summary>
        public class MainUI:UnrealEngine.UMonoActorComponent
        {
            public TSubclassOf<UUserWidget> MainWidget;
    
            APlayerController PC;
            UUserWidget widget;
    
            public static MainUI Instance;
    
            public MainUI()
            {
                Instance = this;
            }
    
            /// <summary>
            /// called on register 
            /// </summary>
            void OnRegister()
            {
                Instance = this;
            }
    
            /// <summary>
            /// called on unregister 
            /// </summary>
            void OnUnRegister()
            {
                Instance = null;
            }
    
            /// <summary>
            /// called on begin play
            /// </summary>
            void BeginPlay()
            {
                //Show UI
                _Open();
            }
    
    
            /// <summary>
            /// Called On End Play
            /// </summary>
            void OnDestroy()
            {
                Instance = null;
            }
    
            void Init()
            {
                if (widget != null)
                    return;
                PC = UGameplayStatics.GetPlayerController(GetWorld(), 0);
                widget = UWidgetBlueprintLibrary.Create(this, MainWidget, PC);
    
                //bind start game button event
                {
                    UButton BtnStart = widget.WidgetTree.FindWidget<UButton>("Button_Start");
                    FMulticastScriptDelegate OnClick = BtnStart.OnClicked;
                    OnClick.Add(this, "OnClickStart");
                    BtnStart.OnClicked = OnClick;
                }
                //bind quit game button event
                {
                    UButton BtnStart = widget.WidgetTree.FindWidget<UButton>("Button_Quit");
                    FMulticastScriptDelegate OnClick = BtnStart.OnClicked;
                    OnClick.Add(this, "OnClickQuit");
                    BtnStart.OnClicked = OnClick;
                }
            }
    
            /// <summary>
            /// This Must be Public for export to blueprint
            /// </summary>
            public void OnClickStart()
            {
                LogInfo("ClickStart");
                UGameplayStatics.LoadStreamLevel(this, "ThirdPersonExampleMap", true, true, new FLatentActionInfo());
                ULevelStreaming LvStreaming = UGameplayStatics.GetStreamingLevel(this, "ThirdPersonExampleMap");
                FMulticastScriptDelegate Del = LvStreaming.OnLevelLoaded;
                Del.Add(Engine.Instance, "OnThirdPersonExampleMapShown");
                LvStreaming.OnLevelShown = Del;
    
                //Close UI
                _Close();
                //Unload UI Level
                UGameplayStatics.UnloadStreamLevel(this, "UI", new FLatentActionInfo());
            }
    
            /// <summary>
            /// This Must be Public for export to blueprint
            /// </summary>
            public void OnClickQuit()
            {
                LogInfo("OnClickQuit");
                _Close();
                UKismetSystemLibrary.QuitGame(GetWorld(), PC, EQuitPreference.Quit);
            }
    
    
    
            void _Close()
            {
                if (widget != null)
                {
                    widget.RemoveFromParent();
                }
                PC.bShowMouseCursor = false;
                UWidgetBlueprintLibrary.SetInputMode_GameOnly(PC);
            }
    
            void _Open()
            {
                if (widget == null)
                {
                    Init();
                }
                widget.AddToViewport();
                PC.bShowMouseCursor = true;
                UWidgetBlueprintLibrary.SetInputMode_UIOnlyEx(PC, widget);
            }
        }
    

    3.点击开始游戏按钮,加载ThirdPersonExampleMap地图,在MyCharacter组件的BeginPlay方法中,给角色创建了武器和盾牌

        public class MyCharacter:UMonoActorComponent
        {
            public TSubclassOf<AStaticMeshActor> SwordPrefab;
            public TSubclassOf<AStaticMeshActor> ShieldPrefab;
    
            void BeginPlay()
            {
                //Create Shield And Sword
    
                ACharacter Char = Cast<ACharacter>(this.GetOwner());
                USkeletalMeshComponent skeletalMesh = Char.Mesh;
                AActor weapon = GetWorld().SpawnActor(SwordPrefab, new FVector(), new FRotator());
                weapon.K2_AttachToComponent(skeletalMesh, "hand_rSocket", EAttachmentRule.SnapToTarget, EAttachmentRule.SnapToTarget, EAttachmentRule.SnapToTarget, true);
                AActor shield = GetWorld().SpawnActor(ShieldPrefab, new FVector(), new FRotator());
                shield.K2_AttachToComponent(skeletalMesh, "lowerarm_lSocket", EAttachmentRule.SnapToTarget, EAttachmentRule.SnapToTarget, EAttachmentRule.SnapToTarget, true);
            }
    
            void Tick(float DeltaTime)
            {
                //UKismetSystemLibrary.DrawDebugString(this, new FVector(0, 0, 0), "wsad to move,j attack", GetOwner(),FLinearColor.Red);
            }
        }

    4.在MyPlayerController组件的Tick方法中,监测玩家是否按下J键,如果按下了J键,则使用技能

    技能的表现包括:

    • 禁用玩家输入
    • 播放一个刀光
    • 播放剑的残影特效
    • 播放空间扭曲特效
    • 播放相机震动效果
    	/// <summary>
            /// Called Every Frame
            /// </summary>
            /// <param name="DeltaTime"></param>
            void Tick(float DeltaTime)
            {
                if (Target == null)
                    return;
    
                if(OwnerPC.WasInputKeyJustPressed(MakeKey("J")) && !_is_skill_using)
                {
                    LogInfo("Key J Down");
    
                    // Play Animation
                    _skill_time_length = Target.Mesh.GetAnimInstance().Montage_Play(Montage);
    
                    _skill_timer = 0.0f;
                    _is_skill_using = true;
    
                    //Disable Input
                    Target.DisableInput(OwnerPC);
    
                    //Attack Light
                    GetWorld().SpawnActor(AttackLight, Target.GetTransform().TransformPosition(FVector.ForwardVector * 300), Target.K2_GetActorRotation());
    
                    //Ghost
                    PS_SwordGhost= UGameplayStatics.SpawnEmitterAttached(PS_SwordGhostPreafab, Target.Mesh, "hand_rSocket", FVector.ZeroVector, FRotator.ZeroRotator, EAttachLocation.SnapToTarget);
    
                    //PS_HeatDistort
                    UGameplayStatics.SpawnEmitterAtLocation(this, PS_HeatDistort, Target.GetTransform().TransformPosition(FVector.ForwardVector * 300), Target.K2_GetActorRotation());
    
                    //Shake
                    UGameplayStatics.PlayWorldCameraShake(this, ShakePrefab, Target.K2_GetActorLocation(), shake_inner_radius, shake_outer_radius);
                }
    
                //Update Skill
                if(_is_skill_using)
                {
                    _skill_timer += DeltaTime;
                    if(_skill_timer>_skill_time_length)
                    {
                        _is_skill_using = false;
                        //Destroy Particle System
                        PS_SwordGhost.K2_DestroyComponent(PS_SwordGhost);
                        //Enable Input
                        Target.EnableInput(OwnerPC);
                        return;
                    }
    
                    //Apply Force
                    if(_skill_timer<_skill_time_length-0.5f)
                    {
                        FHitResult Hit;
                        Target.K2_AddActorWorldOffset(Target.GetTransform().TransformVector(FVector.ForwardVector) * 300 * DeltaTime, false, out Hit, false);
                    }
    
                }
            }

    5.在刀光效果的更新组件中(LightFade),让光源产生一个闪光效果

        /// <summary>
        /// Fade Light In And Out
        /// </summary>
        public class LightFade:UnrealEngine.UMonoActorComponent
        {
            float _fadeInTime = 0.3f;
            float _fadeOutTime = 0.3f;
            float _timer;
    
            public float intensity = 500000;
    
            UPointLightComponent lightCom;
    
            void BeginPlay()
            {
                lightCom = GetOwner().GetComponentByClass<UPointLightComponent>();
            }
    
            void Tick(float DeltaTime)
            {
                _timer += DeltaTime;
                if(_timer< _fadeInTime)
                {
                    lightCom.Intensity = _timer / _fadeInTime * intensity;
                }
                else if(_timer < _fadeInTime+ _fadeOutTime)
                {
                    lightCom.Intensity = (_timer- _fadeInTime) / _fadeOutTime * intensity;
                }
                else
                {
                    //Destroy Light
                    GetOwner().Destroy();
                }
            }
        }
    展开全文
  • Unreal4制作插件

    千次阅读 2015-08-03 11:51:04
    UnrealEngine4开放了插件功能,估计用不了多久UE4的生态就会想Unity3D一样健全.成熟。目前看来Unreal Engine4的工程创建最好都是通过-工程创建向导生成,那么源码版的同学会创建一个带有Engine和Programes的文件夹。...

    http://blog.sina.com.cn/s/blog_7c5fd2e90101lc1x.html


    UnrealEngine4开放了插件功能,估计用不了多久UE4的生态就会想Unity3D一样健全.成熟。目前看来Unreal Engine4的工程创建最好都是通过-工程创建向导生成,那么源码版的同学会创建一个带有Engine和Programes的文件夹。 如下图:


    为Unreal4制作插件非源码版的引擎创建出来只有Games和外部依赖项。这样一来非源码版也可以看到插件,在外部依赖项里。

        所以如果同学们想把自己的代码,或者某些功能,或者架构让其他开发者使用。那就必须要创建UE4的插件,这样便于开发者管理工程,插件和客户端可以分开更新。
       
        或者想把自己的某些功能商业化的同学选择插件,再未来1年内UnrealEngine4的插件商城生态做好时,就可以把自己的劳动成果变现啦 为Unreal4制作插件 ...   下面就为同学们介绍如何自己制作UnrealEngine4的插件。

        1. 同学们需要新建一个文件夹然后自己动手制作一个 xxx.uplugin 文件。 .uplugin这是个类似于配置描述文,跟.uproject文件差不多,引擎在启动加载插件时会读取.uplugin去加载相对应的模块.源码.资源等。 那么描述文件如何定义呢? 好吧,大概就是那么个配置项一定不能乱写,否则插件会加载失败。 如下图:

    为Unreal4制作插件

    具体参数作用大概为:
    为Unreal4制作插件

        完成.uplugin文件后在同级文件夹下还需要创建Binaries.Intermediate.Resources.Source这四个文件夹。
    Resources文件夹: 是放资源的用的,里面包含一个必要资源就是我们插件在编辑器中显示的图标喽(请注意命名需要为Icon128.png _ 128*128像素 _ .png格式)

    Source文件夹: 里面有个插件名字的文件夹(\Source\XXXX\),文件夹里面需要放3个文件夹和一个.Build.cs文件。文件夹分别是Classes.Private.Public用了放置插件的源码,当然会区分用户访问权限。 .Build.cs文件就是插件工程的配置文件,里面需要配置包含文件路径,引用模块名称等..  如下图:

    为Unreal4制作插件

    Binaries文件夹和Intermediate文件夹:里面是插件生成的文件和临时文件,最好是空的。

        OK,基本上插件就算完成了。同学还需要把自己做的文件夹放到引擎中或者游戏中进行编译一下。路径为:
    Plugin type Search path
    Engine plugin                           /UE4 root/Engine/Plugins/My Engine Plugin/
    Game plugin                          /My project/Plugins/My Game Plugin/
        编译完我们开打我们的编辑器,找到菜单栏Window -> PluginsPlugin里就可以看到我们自己制作的插件了。

    为Unreal4制作插件

        选择我们的插件使它生效然后,重起编辑器插件就被加载进来了。在文件菜单中 Refresh Visual Studio Project,我们的工程中就多插件的代码,在外部依赖项里也会出现我们的代码呦为Unreal4制作插件

    展开全文
  • UE4 在工程中使用他人购买的插件

    千次阅读 2019-04-02 20:00:40
    项目多人开发时,需要将插件分享到整个开发组中进行使用 1.打开工程,查看Edit-Plugin中插件名称 2.打开引擎位置,复制Plugin文件夹到工程根目录 3.重新打开工程即可 ...
  • 介绍UnrealVS插件使用,方便程序猿在做UE4项目时候的UBT编译与热更新问题。
  • Unreal Engine 4 C++ 插件介绍

    千次阅读 2016-12-12 16:10:30
    Unreal Engine 4 C 插件介绍 创建插件 C静态链接插件 Unreal Engine 4 C++ 插件介绍好记性不如烂笔头啊,还是记录一下!1.创建插件 创建插件的步骤很简单,但是很容易出错: 关闭项目,在项目目录下创建Plugins...
  • UE4项目记录(二)unreal插件开发

    千次阅读 2018-05-28 21:41:48
    所谓水水更健康,第一篇文章水分肯定是会多点的(其实都是水分^_^),这篇... 既然是造轮子,不可能上来就直接在ue4创建的项目中开撸,要是换个游戏呢,代码拷贝那肯定是不现实的,所以unreal提供了plugin。 pl...
  • UE4之ARToolKit_Andriod

    2020-07-27 23:32:34
    喜欢的小伙伴可以下载一下,有积分的贡献一下,没积分的评论下发邮箱。
  • 上篇中介绍了Unreal使用插件的方式创建编辑器 这里使用构建Module的方式传建编辑器。文件都是一样的,区别在于,手动的添加文件 这里需要注意的是,在工程的Target.cs中,需要添加自定义模块的名称 ...
  • 7月底发布的官方插件:从 Blender 到 Unreal https://zhuanlan.zhihu.com/p/199197335 概述 从 3DMax 到 Maya 到 C4D,最近大火的常用的 3D 软件又转到了 Blender,除了因为它操作起来很舒服,更是因为永久免费...
  • Unreal开发HoloLens2内容

    2020-07-30 14:35:05
    Unreal Engine 4 开发 ...如果要使用MixedReality-Unreal插件点此跳转 Unreal插件的导入方式我就不在此描述了,非常简单,网上资料也很多,点此有一个大概的工具使用介绍视频 开发的前置条件就这么多了,点此跳转至从
  • Unreal4AR插件Editor demo版本的安装

    千次阅读 2017-08-05 15:20:52
    下载好后的Ureal4AR插件解压后文件目录如图所示 我使用的UE4是4.16.2版本 新建一个UE4项目,项目选择C++类型,Basic Code,不需要包含Starter Content 项目名称命名为Unreal4AR_test,开始创建项目。 VS2015...
  • 使用Unreal Engine 开发车辆组装,碰撞,模拟的插件的细节技术
  • UE4引擎AR开发插件Unreal4AR的获取方法

    千次阅读 2017-08-05 11:14:53
    《学习笔记记录》 新人接触UE4,在此发帖主要用于记录学习内容,同时希望可以帮助其他朋友 在网上看到很多AR的视频,感觉很...插件名称:Unreal4AR 官方网址:http://www.unreal4ar.com/ 打开后出现如下所示界面 此
  • Unreal Engine 4 C++使用注意事项

    千次阅读 2016-10-21 10:31:14
    接触UnrealEngine4大概有快两周了,从安装配置到编辑器的熟悉,再到官方实例的学习以及Blueprint的应用。从UE3的UnrealScript和各种classes到UE4现在的发开方式,昨天大概拟定了一个UE4引擎探究的计划,下周会围绕...
  • 由于GameplayAbilities插件基本上没有资料(除了前面提供的那篇Dave的博文以外,再无资料,有迹象表明Dave是这个插件的开发者)。 这个插件究竟能做什么,简单来说是可以制作复杂的技能系统,具体怎么奇妙现在还...
  • Unreal 使用 PySide 开发界面 | 利用 FBX Python SDK 操作 FBX 文件 前言   前段时间协助动画组制作将动画 FBX 文件导入 Unreal 引擎里面,遇到很麻烦的问题。  由于一些流程规范的问题...
  • 为UE4安装UnrealCV插件

    2020-07-31 09:44:04
    一开始报错,显示无"因为无法找到模块"UnrealCV",所以插件"UnrealCV"加载失败.请确认插件安装正确.否则请考虑对此项目禁用此插件" 解决方法 首先我现在的是UE4.16版本,所以需要下载相对应版本的插件. 直接...
  • UE4.natvis 官方文档: ... 其中debug插件安装方式是: 将文件:[UE4Root]/Engine/Extras/VisualStudioDebugging/UE4...
1 2 3 4 5 ... 20
收藏数 2,498
精华内容 999
关键字:

unreal 使用 插件