小编Sak*_*uya的帖子

Unity-是否有必要从游戏构建中排除AssetBundles中使用的资产?

很难找到有关AssetBundles实际工作方式的大量信息。找不到有关如何通过游戏版本管理资产捆绑的任何解释。

基本上,我AssetBundles在“项目”窗口中有一个文件夹。我放入此文件夹中的所有资产均作为AssetBundles构建在构建目录(例如GameName / Data / AssetBundles)内的文件夹中,然后在需要时加载。

但是,当我自己构建游戏时,它是否不知道在游戏构建中不包括AssetBundles中使用的这些资产?还是我需要以某种方式排除它们?

编辑:我已经取得了一些进展。

据我了解,只有其资产驻留在构建设置中的场景中的资产才会通过游戏构建进行构建。脚本始终内置在游戏版本中(我不确定是否有解决此问题的方法,但这对我来说不是问题)。

因此,我在游戏构建中只有一个场景,它是游戏的启动对象。此场景上有一个资产管理器脚本,该脚本在中DontDestroyOnLoad指定Awake。

我的资产管理器脚本基本上只处理捆绑软件,资产和实例的加载/卸载。

我目前不太确定如何为场景构建资产捆绑包。我先使用它LoadAllAssets,然后再做LoadLevel,但是如果多个场景共享某些资产怎么办?场景构建最终会膨胀但拥有可以共享的资产副本吗?我读到依赖关系是在Unity 5中自动处理的,但是我不确定是否与此相关。

assets build unity-game-engine assetbundle

6
推荐指数
1
解决办法
4921
查看次数

将 Datagrid 行的可见性设置为 Collapsed 似乎会破坏滚动条?

我有一个包含项目作为列表的数据网格,此自定义列表中的一个属性是一个布尔值,它确定可见性(可以通过复选框切换可见性)。

我的工作是这样的:

<Style x:Key="RowStyle" TargetType="DataGridRow">
    <Style.Triggers>
        <DataTrigger Binding="{Binding Path=IsVisible}" Value="False">
            <Setter Property="Visibility" Value="Collapsed"/>
        </DataTrigger>
        <DataTrigger Binding="{Binding Path=IsVisible}" Value="True">
            <Setter Property="Visibility" Value="Visible"/>
        </DataTrigger>
    </Style.Triggers>
</Style>
Run Code Online (Sandbox Code Playgroud)

我的数据网格就像:

<DataGrid Name="dataList" DataContext="{StaticResource DataViewSource}" ItemsSource="{Binding}" 
          ItemContainerStyle="{StaticResource RowStyle}"
          ScrollViewer.VerticalScrollBarVisibility="Auto"
          ScrollViewer.HorizontalScrollBarVisibility="Auto"
          AutoGenerateColumns="False" 
          CanUserAddRows="False" 
          CanUserDeleteRows="False" 
          IsReadOnly="True"
          CanUserReorderColumns="True" CanUserSortColumns="True"> ..etc
Run Code Online (Sandbox Code Playgroud)

假设我有 100 行,当切换可见性时,其中 80 行被折叠。

问题是:当项目的可见性更改时,滚动条似乎没有更新。从外观上看,这 80 行似乎仍然可见(小拖动条),但是当尝试滚动浏览 20 个可见的项目时,它需要更多的滚动,因为滚动条假设它仍然需要滚动 100 个项目。物品什么的。

有没有办法可以通知滚动条可见性变化?或者我应该自己处理滚动事件并从数据网格中删除滚动条?

c# wpf datagrid scroll visibility

5
推荐指数
1
解决办法
1553
查看次数

使50%的值成为另一个变量的最大值(并且0%/ 100%等于最小值)

我正在使用Unity Engine进行游戏,我想要一个太阳物体增加亮度,直到达到一天的特定时间,然后在那之后开始减少.

我将日间时间表示为白天的百分比值(0到1),如下所示:

float currentTime = 0.50f; //50% = noon, 0%/100% = midnight
float dayRange = 0.75f - 0.25f; //Daylight hours = 25% to 75% (6:00 to 18:00)
float dayPercent = (currentTime - 0.25f) / dayRange; //Current time between the daylight hours as a percentage.
float maxSunLight = 10f;
float currentSunLight = 5f;
Run Code Online (Sandbox Code Playgroud)

我想要的是:

当dayPercent介于0和0.5之间时,currentSunLight将从0增加到10.

当dayPercent介于0.5和1之间时,currentSunLight将从10减少到0.

我有一个混乱的方式这样做,但我敢肯定这可能是一个简单的数学函数?

编辑:只是为了包括我的"凌乱"方式

if(dayPercent <= 0.50f){
    currentSunLight =  (dayPercent * 2) / maxSunLight * 100;
} else …
Run Code Online (Sandbox Code Playgroud)

c# math percentage unity-game-engine

2
推荐指数
1
解决办法
121
查看次数