ue4插件开发

编写ue4插件


1. 直接从Editor中生成一个空的插件模板

这里写图片描述

然后最右下角
这里写图片描述

这里写图片描述


2. 关掉vs,右键生成一下工程文件,把Plugins扫进去

这里写图片描述

打开解决方案开始编写插件
瞧,插件加进来了
这里写图片描述


3. 编写插件

  1. 首先把插件的配置文TestPlugin.uplugin件改一下(被这个坑了两天)
    这个LoadingPhase的值默认为Default,必须修改为PreDefault,不然重启Editor会报关联不上插件源码的错误,切记!
    这里写图片描述

  2. 修改编译模块配置TestPlugin.Build.cs文件,c#文件
    这里写图片描述

    • 详细代码,里面有注释
      using UnrealBuildTool;
      using System.IO; //路径获取需要用到IO
      
      public class TestPlugin : ModuleRules
      {
          private string ModulePath //当前TestPlugin.Build.cs文件所在的路径
          {
              get { return Path.GetDirectoryName(RulesCompiler.GetModuleFilename(this.GetType().Name)); }
          }
      
          private string ThirdPartyPath //这个插件引用的第三方库的目录
          {
              get { return Path.GetFullPath(Path.Combine(ModulePath, "../../ThirdParty/")); }
          }
      
          private string MyTestLibPath //第三方库MyTestLib的目录
          {
              get { return Path.GetFullPath(Path.Combine(ThirdPartyPath, "MyTestLib")); }
          }
      
          public TestPlugin(TargetInfo Target)
          {
              PublicIncludePaths.AddRange( //公有文件搜索路径
                  new string[] {
                      "TestPlugin/Public"
                      // ... add public include paths required here ...
                  }
                  );
      
              PrivateIncludePaths.AddRange(
                  new string[] {
                      "TestPlugin/Private" //私有文件搜索路径
                      // ... add other private include paths required here ...
                  }
                  );
      
              PublicDependencyModuleNames.AddRange(
                  new string[]
                  {
                      "Core"
                      // ... add other public dependencies that you statically link with here ...
                  }
                  );
      
              PrivateDependencyModuleNames.AddRange(
                  new string[]
                  {
                      "CoreUObject",
                      "Engine",
                      "Slate",
                      "SlateCore",
                      // ... add private dependencies that you statically link with here ...  
                  }
                  );
      
              DynamicallyLoadedModuleNames.AddRange(
                  new string[]
                  {
                      // ... add any modules that your module loads dynamically here ...
                  }
                  );
      
              LoadThirdPartyLib(Target); //加载第三方库
          }
      
          public bool LoadThirdPartyLib(TargetInfo Target)
          {
              bool isLibrarySupported = false;
              if ((Target.Platform == UnrealTargetPlatform.Win64) || (Target.Platform == UnrealTargetPlatform.Win32))//平台判断
              {
                  isLibrarySupported = true;
                  System.Console.WriteLine("----- isLibrarySupported true");
                  string PlatformSubPath = (Target.Platform == UnrealTargetPlatform.Win64) ? "Win64" : "Win32";
                  string LibrariesPath = Path.Combine(MyTestLibPath, "Lib");
                  PublicAdditionalLibraries.Add(Path.Combine(LibrariesPath, PlatformSubPath, "TestLib.lib"));//加载第三方静态库.lib
              }
      
              if (isLibrarySupported) //成功加载库的情况下,包含第三方库的头文件
              {
                  // Include path
                  System.Console.WriteLine("----- PublicIncludePaths.Add true"); 
                  PublicIncludePaths.Add(Path.Combine(MyTestLibPath, "Include"));
              }
              return isLibrarySupported;
          }
      }
  3. 写个自定义的char – TestChar,继承自Character
    先看下文件结构,需要蓝图可见的必须丢到Public下
    这里写图片描述

    1. 先修改预编译头文件TestPluginPrivatePCH.h,必须包含CoreUObject,不然编译不过,切记!

      
      #include "TestPlugin.h"
      
      
      // UObject core
      
      #include "CoreUObject.h" //默认是不含这个的
      
      
      // Actor based classes
      
      #include "GameFramework/Character.h" //包插件中所有用的的引擎类都丢到这里来
      
    2. 头文件,正常编写自定义的类一样

      
      #pragma once
      
      
      
      #include "GameFramework/Character.h"
      
      
      #include "TestChar.generated.h"
      
      
      UCLASS()
      class ATestChar : public ACharacter
      {
          GENERATED_BODY()
      
      public:
          // Sets default values for this character\'s properties
          ATestChar();
      
          UPROPERTY(EditAnywhere, Category = "Test Char")
              int32           mAge;
          UPROPERTY(EditAnywhere, Category = "Test Char")
              FString         mName;
      };
    3. cpp文件,包含的是预编译文件和类的头文件

      
      #include "TestPluginPrivatePCH.h"
      
      
      #include "TestChar.h"
      
      
      #include "TestLib.h" //引入的第三方库的头文件
      
      
      ATestChar::ATestChar() : Super()
      {
          mAge = myPrint("hello world", 123); //第三方库中的方法
          mName = "yangx";
      }
    4. 第三方库打成了一个静态库TestLib.lib

      • TestLib.h

        
        #ifndef __TEST_LIB_H__
        
        
        #define __TEST_LIB_H__
        
        
        #include <string>
        
        
        #include <iostream>
        
        
        int myPrint(std::string _name, int _age);
        
        
        #endif
        
      • TestLib.cpp

        
        #include "TestLib.h"
        
        
        int myPrint(std::string _name, int _age)
        {
            return _age + 1000;
        }

4. 编译运行,在Editor中create一个Blueprint继承自这个TestChar类

这里写图片描述

这里写图片描述


5. 拖到场景运行游戏

这里写图片描述


6. 插件的git地址

  • 7
    点赞
  • 41
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 4
    评论
UE4视频播放器插件是一种用于在虚幻引擎4(UE4)中实现视频播放功能的扩展工具。它提供了一种简单且高效的方法来在虚幻引擎中集成视频播放功能,使开发人员能够轻松地在游戏或交互式应用程序中播放各种类型的视频内容。 UE4视频播放器插件具有许多有用的功能,包括播放视频文件、网络流式传输、高分辨率、全屏模式、音频控制等。它支持多种视频格式,如MP4、AVI、WMV等,并能够根据应用程序的需求进行相应的配置。 使用UE4视频播放器插件开发人员可以在游戏中实现各种不同的视频功能。例如,在解密游戏中,可以通过播放剧情视频来推动故事情节的发展;在教育应用程序中,可以通过播放教学视频来提供更详细的学习材料;在虚拟现实应用程序中,可以将360度全景视频与环境交互相结合,获得更沉浸式的体验。 UE4视频播放器插件还提供了丰富的编程接口和蓝图节点,使开发人员可以自定义和控制视频的播放行为。这使得开发人员能够轻松地实现自动播放、循环播放、暂停、快进、倒播等各种交互功能。 总之,UE4视频播放器插件开发人员提供了一种方便且灵活的方法来实现视频播放功能。无论是游戏开发还是交互式应用程序开发,都可以借助该插件轻松地集成视频播放功能,并为用户带来更丰富、更多样化的体验。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

蝶泳奈何桥.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值